1/* 2 * Copyright 2009, François Revol, revol@free.fr. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _MULTIBOOT_H 6#define _MULTIBOOT_H 7 8 9#ifndef __ASSEMBLER__ 10 11#include <SupportDefs.h> 12 13#endif /* __ASSEMBLER__ */ 14 15 16/* minimal part of the MultiBoot API */ 17/* we use the official names */ 18 19/* magics */ 20#define MULTIBOOT_MAGIC 0x1badb002 21#define MULTIBOOT_MAGIC2 0x2badb002 22 23/* header flags */ 24#define MULTIBOOT_PAGE_ALIGN 0x00000001 25#define MULTIBOOT_MEMORY_INFO 0x00000002 26#define MULTIBOOT_VIDEO_MODE 0x00000004 27#define MULTIBOOT_AOUT_KLUDGE 0x00010000 28 29/* info flags */ 30#define MULTIBOOT_INFO_MEMORY 0x00000001 31#define MULTIBOOT_INFO_BOOTDEV 0x00000002 32#define MULTIBOOT_INFO_CMDLINE 0x00000004 33#define MULTIBOOT_INFO_MODS 0x00000008 34#define MULTIBOOT_INFO_MEM_MAP 0x00000040 35 36#ifndef __ASSEMBLER__ 37 38/* info struct passed to the loader */ 39struct multiboot_info { 40 uint32 flags; 41 uint32 mem_lower; 42 uint32 mem_upper; 43 uint32 boot_device; 44 uint32 cmdline; 45 uint32 mods_count; 46 uint32 mods_addr; 47 uint32 syms[4]; 48 uint32 mmap_length; 49 uint32 mmap_addr; 50 uint32 drives_length; 51 uint32 drives_addr; 52 uint32 config_table; 53 uint32 boot_loader_name; 54 uint32 apm_table; 55 uint32 vbe_control_info; 56 uint32 vbe_mode_info; 57 uint16 vbe_interface_seg; 58 uint16 vbe_interface_off; 59 uint16 vbe_interface_len; 60}; 61 62 63#ifdef __cplusplus 64extern "C" { 65#endif 66 67extern void dump_multiboot_info(void); 68extern status_t parse_multiboot_commandline(struct stage2_args *args); 69 70#ifdef __cplusplus 71} 72#endif 73 74#endif /* __ASSEMBLER__ */ 75 76#endif /* _MULTIBOOT_H */ 77