/** * @file * * This Structures ars defined by the multiboot specification and you will * get them from your bootloader. * * Ref * --- * https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#Boot-information-format * */ #ifndef MULTIBOOT_H #define MULTIBOOT_H #include #include typedef struct multiboot_information_struct { uint32_t flags; uint32_t mem_lower; uint32_t mem_upper; uint32_t boot_device; uint32_t cmdline; uint32_t mods_count; uint32_t mods_addr; uint32_t syms[4]; uint32_t mmap_length; uint32_t mmap_addr; uint32_t drives_length; uint32_t drives_addr; uint32_t config_table; uint32_t boot_loader_name; uint32_t amp_table; uint32_t vbe_control_info; uint32_t vbe_mode_info; uint16_t vbe_mode; uint16_t vbe_interface_seg; uint16_t vbe_interface_off; uint16_t vbe_interface_len; uint64_t framebuffer_addr; uint32_t framebuffer_pitch; uint32_t framebuffer_width; uint32_t framebuffer_height; uint8_t framebuffer_bpp; uint8_t framebuffer_type; //color_info; }multiboot_information; typedef struct multiboot_mmap_struct { uint32_t size; uint64_t base_addr; uint64_t length; uint32_t type; }multiboot_mmap; typedef struct multiboot_mod_struct { uint32_t mod_start; uint32_t mod_end; uint32_t string; uint32_t reserved; }multiboot_mod; multiboot_information* multiboot_read(uint32_t eax, uint32_t ebx,bool silent); #endif