summaryrefslogtreecommitdiff
path: root/Kernel/Multiboot.h
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Multiboot.h')
-rw-r--r--Kernel/Multiboot.h97
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;