diff options
Diffstat (limited to 'Kernel/Multiboot.h')
-rw-r--r-- | Kernel/Multiboot.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/Kernel/Multiboot.h b/Kernel/Multiboot.h new file mode 100644 index 0000000000..6f586bc395 --- /dev/null +++ b/Kernel/Multiboot.h @@ -0,0 +1,97 @@ +#pragma once + +#include <AK/Types.h> + +struct multiboot_aout_symbol_table { + dword tabsize; + dword strsize; + dword addr; + dword reserved; +}; +typedef struct multiboot_aout_symbol_table multiboot_aout_symbol_table_t; + +struct multiboot_elf_section_header_table { + dword num; + dword size; + dword addr; + dword shndx; +}; +typedef struct multiboot_elf_section_header_table multiboot_elf_section_header_table_t; + +struct multiboot_info { + // Multiboot info version number. + dword flags; + + // Available memory from BIOS. + dword mem_lower; + dword mem_upper; + + // "root" partition. + dword boot_device; + + // Kernel command line. + dword cmdline; + + // Boot-Module list. + dword mods_count; + dword mods_addr; + + union { + multiboot_aout_symbol_table_t aout_sym; + multiboot_elf_section_header_table_t elf_sec; + } u; + + // Memory Mapping buffer. + dword mmap_length; + dword mmap_addr; + + // Drive Info buffer. + dword drives_length; + dword drives_addr; + + // ROM configuration table. + dword config_table; + + // Boot Loader Name. + dword boot_loader_name; + + // APM table. + dword apm_table; + + // Video. + dword vbe_control_info; + dword vbe_mode_info; + word vbe_mode; + word vbe_interface_seg; + word vbe_interface_off; + word vbe_interface_len; + + qword framebuffer_addr; + dword framebuffer_pitch; + dword framebuffer_width; + dword framebuffer_height; + byte framebuffer_bpp; +#define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0 +#define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1 +#define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2 + byte framebuffer_type; + union { + struct + { + dword framebuffer_palette_addr; + word framebuffer_palette_num_colors; + }; + struct + { + byte framebuffer_red_field_position; + byte framebuffer_red_mask_size; + byte framebuffer_green_field_position; + byte framebuffer_green_mask_size; + byte framebuffer_blue_field_position; + byte framebuffer_blue_mask_size; + }; + }; +}; +typedef struct multiboot_info multiboot_info_t; + +extern "C" multiboot_info_t* multiboot_info_ptr; |