#pragma once #include typedef struct{ uint32_t size; uint32_t addr_l; uint32_t addr_h; uint32_t len_l; uint32_t len_h; uint32_t type; } __attribute__((packed)) multiboot_memory_map_t; typedef struct{ uint32_t tabsize; uint32_t strsize; uint32_t addr; uint32_t reserved; } multiboot_aout_symbol_table_t; typedef struct{ uint32_t num; uint32_t size; uint32_t addr; uint32_t shndx; } multiboot_elf_section_header_table_t; typedef struct{ uint32_t start; uint32_t end; uint32_t cmdline; uint32_t pad; // Padding, alwys zero } multiboot_module_t; typedef struct{ /* Multiboot info version number */ uint32_t flags; /* Available memory from BIOS */ uint32_t mem_lower; uint32_t mem_upper; /* "root" partition */ uint32_t boot_device; /* Kernel command line */ uint32_t cmdline; /* Boot-Module list */ uint32_t mods_count; uint32_t mods_addr; union{ multiboot_aout_symbol_table_t aout_sym; multiboot_elf_section_header_table_t elf_sec; } u; /* Memory Mapping buffer */ uint32_t mmap_length; uint32_t mmap_addr; /* Drive Info buffer */ uint32_t drives_length; uint32_t drives_addr; /* ROM configuration table */ uint32_t config_table; /* Boot Loader Name */ uint32_t boot_loader_name; /* APM table */ uint32_t apm_table; /* Video */ 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; // FIXME: This may fail, as we are not in 64 bit (long) mode uint32_t framebuffer_pitch; uint32_t framebuffer_width; uint32_t framebuffer_height; uint8_t framebuffer_bpp; uint8_t framebuffer_type; union{ struct{ uint32_t framebuffer_palette_addr; uint16_t framebuffer_palette_num_colors; }; struct{ uint8_t framebuffer_red_field_position; uint8_t framebuffer_red_mask_size; uint8_t framebuffer_green_field_position; uint8_t framebuffer_green_mask_size; uint8_t framebuffer_blue_field_position; uint8_t framebuffer_blue_mask_size; }; }; } __attribute__((packed)) multiboot_info_t;