Multiboot.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #pragma once
  2. #include <AK/Types.h>
  3. struct multiboot_aout_symbol_table {
  4. dword tabsize;
  5. dword strsize;
  6. dword addr;
  7. dword reserved;
  8. };
  9. typedef struct multiboot_aout_symbol_table multiboot_aout_symbol_table_t;
  10. struct multiboot_elf_section_header_table {
  11. dword num;
  12. dword size;
  13. dword addr;
  14. dword shndx;
  15. };
  16. typedef struct multiboot_elf_section_header_table multiboot_elf_section_header_table_t;
  17. struct multiboot_info {
  18. // Multiboot info version number.
  19. dword flags;
  20. // Available memory from BIOS.
  21. dword mem_lower;
  22. dword mem_upper;
  23. // "root" partition.
  24. dword boot_device;
  25. // Kernel command line.
  26. dword cmdline;
  27. // Boot-Module list.
  28. dword mods_count;
  29. dword mods_addr;
  30. union {
  31. multiboot_aout_symbol_table_t aout_sym;
  32. multiboot_elf_section_header_table_t elf_sec;
  33. } u;
  34. // Memory Mapping buffer.
  35. dword mmap_length;
  36. dword mmap_addr;
  37. // Drive Info buffer.
  38. dword drives_length;
  39. dword drives_addr;
  40. // ROM configuration table.
  41. dword config_table;
  42. // Boot Loader Name.
  43. dword boot_loader_name;
  44. // APM table.
  45. dword apm_table;
  46. // Video.
  47. dword vbe_control_info;
  48. dword vbe_mode_info;
  49. word vbe_mode;
  50. word vbe_interface_seg;
  51. word vbe_interface_off;
  52. word vbe_interface_len;
  53. qword framebuffer_addr;
  54. dword framebuffer_pitch;
  55. dword framebuffer_width;
  56. dword framebuffer_height;
  57. byte framebuffer_bpp;
  58. #define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0
  59. #define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1
  60. #define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2
  61. byte framebuffer_type;
  62. union {
  63. struct
  64. {
  65. dword framebuffer_palette_addr;
  66. word framebuffer_palette_num_colors;
  67. };
  68. struct
  69. {
  70. byte framebuffer_red_field_position;
  71. byte framebuffer_red_mask_size;
  72. byte framebuffer_green_field_position;
  73. byte framebuffer_green_mask_size;
  74. byte framebuffer_blue_field_position;
  75. byte framebuffer_blue_mask_size;
  76. };
  77. };
  78. };
  79. typedef struct multiboot_info multiboot_info_t;
  80. extern "C" multiboot_info_t* multiboot_info_ptr;