/* multiboot.h - the header for Multiboot */ /* Macros. */ /* The magic number for the Multiboot header. */ #define MULTIBOOT_HEADER_MAGIC 0x1BADB002 /* The flags for the Multiboot header. */ # define MULTIBOOT_HEADER_FLAGS 0x00000003 /* The magic number passed by a Multiboot-compliant boot loader. */ #define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 /* The size of our stack (16KB). */ #define STACK_SIZE 0x4000 #ifndef ASM /* Do not include here in boot.S. */ /* Types. */ /* The section header table for ELF. */ typedef struct elf_section_header_table { unsigned long num; unsigned long size; unsigned long addr; unsigned long shndx; } elf_section_header_table_t; /* The Multiboot information. */ typedef struct multiboot_info { unsigned long flags; unsigned long mem_lower; unsigned long mem_upper; unsigned long boot_device; unsigned long cmdline; unsigned long mods_count; unsigned long mods_addr; elf_section_header_table_t elf_sec; unsigned long mmap_length; unsigned long mmap_addr; /* unsigned long padding[3]; */ /* char *loader_name; */ /* unsigned long apm_table; */ /* unsigned long vbe_control_info; */ /* unsigned long vbe_mode_info; */ /* unsigned long vbe_mode; */ /* unsigned long vbe_interface_seg; */ /* unsigned long vbe_interface_off; */ /* unsigned long vbe_interface_len; */ } multiboot_info_t; /* The memory map. Be careful that the offset 0 is base_addr_low but no size. */ typedef struct memory_map { unsigned long size; unsigned long base_addr_low; unsigned long base_addr_high; unsigned long length_low; unsigned long length_high; unsigned long type; } memory_map_t; #endif /* ! ASM */