ApertureOS
multiboot.h
Go to the documentation of this file.
1 #ifndef _MULTIBOOT_HEADER_H_
2 #define _MULTIBOOT_HEADER_H_
3 
4 #include "types.h"
5 
11 typedef unsigned char multiboot_uint8_t;
12 typedef unsigned short multiboot_uint16_t;
13 typedef unsigned int multiboot_uint32_t;
14 typedef unsigned long long multiboot_uint64_t;
15 
16 typedef struct
17 {
18  unsigned short setWindow;
19  unsigned short setDisplayStart;
20  unsigned short setPalette;
21  unsigned short IOPrivInfo;
22 } VESA_PM_INFO;
23 
24 typedef struct
25 {
26  char VbeSignature[4]; // == "VESA"
27  uint16_t VbeVersion; // == 0x0300 for VBE 3.0
28  uint16_t OemStringPtr[2]; // isa vbeFarPtr
29  uint8_t Capabilities[4];
30  uint16_t VideoModePtr[2]; // isa vbeFarPtr
31  uint16_t TotalMemory; // as # of 64KB blocks
32 } __attribute__((packed)) VbeInfoBlock;
33 
34 typedef struct
35 {
36  uint16_t attributes;
37  uint8_t winA,winB;
38  uint16_t granularity;
39  uint16_t winsize;
40  uint16_t segmentA, segmentB;
41  void (*realFctPtr)();
42  uint16_t pitch; // bytes per scanline
43 
44  uint16_t Xres, Yres;
45  uint8_t Wchar, Ychar, planes, bpp, banks;
46  uint8_t memory_model, bank_size, image_pages;
47  uint8_t reserved0;
48 
49  uint8_t red_mask, red_position;
50  uint8_t green_mask, green_position;
51  uint8_t blue_mask, blue_position;
52  uint8_t rsv_mask, rsv_position;
54 
55  uint32_t physbase; // your LFB (Linear Framebuffer) address ;)
56  uint32_t offScrOffset;
57  uint16_t offScrSize;
58 } __attribute__((packed)) ModeInfoBlock;
59 
61 {
62  /* Must be MULTIBOOT_MAGIC - see above. */
64 
65  /* Feature flags. */
67 
68  /* The above fields plus this one must equal 0 mod 2^32. */
70 
71  /* These are only valid if MULTIBOOT_AOUT_KLUDGE is set. */
77 
78  /* These are only valid if MULTIBOOT_VIDEO_MODE is set. */
83 };
84 
85 /* The symbol table for a.out. */
87 {
92 };
93 typedef struct multiboot_aout_symbol_table multiboot_aout_symbol_table_t;
94 
95 /* The section header table for ELF. */
97 {
102 };
103 typedef struct multiboot_elf_section_header_table multiboot_elf_section_header_table_t;
104 
106 {
107  /* Multiboot info version number */
109 
110  /* Available memory from BIOS */
113 
114  /* "root" partition */
116 
117  /* Kernel command line */
119 
120  /* Boot-Module list */
123 
124  union
125  {
126  multiboot_aout_symbol_table_t aout_sym;
127  multiboot_elf_section_header_table_t elf_sec;
128  } u;
129 
130  /* Memory Mapping buffer */
133 
134  /* Drive Info buffer */
137 
138  /* ROM configuration table */
140 
141  /* Boot Loader Name */
143 
144  /* APM table */
146 
147  /* Video */
154 
160 #define MULTIBOOT_FRAMEBUFFER_TYPE_INDEXED 0
161 #define MULTIBOOT_FRAMEBUFFER_TYPE_RGB 1
162 #define MULTIBOOT_FRAMEBUFFER_TYPE_EGA_TEXT 2
164  union
165  {
166  struct
167  {
170  };
171  struct
172  {
179  };
180  };
181 };
182 typedef struct multiboot_info multiboot_info_t;
183 
185 {
189 };
190 
192 {
197 } __attribute__((packed));
198 typedef struct multiboot_mmap_entry multiboot_memory_map_t;
199 
201 {
202  /* the memory used goes from bytes 'mod_start' to 'mod_end-1' inclusive */
205 
206  /* Module command line */
208 
209  /* padding to take it to 16 bytes (must be zero) */
211 };
212 typedef struct multiboot_mod_list multiboot_module_t;
213 
214 /* APM BIOS info. */
216 {
226 };
227 
230 #endif /* end of include guard: _MULTIBOOT_HEADER_H_ */
uint8_t rsv_position
Definition: multiboot.h:52
unsigned char multiboot_uint8_t
Definition: multiboot.h:11
Definition: multiboot.h:24
unsigned short setPalette
Definition: multiboot.h:20
multiboot_uint8_t framebuffer_red_mask_size
Definition: multiboot.h:174
multiboot_uint32_t config_table
Definition: multiboot.h:139
multiboot_uint32_t load_end_addr
Definition: multiboot.h:74
Definition: multiboot.h:86
multiboot_uint8_t framebuffer_blue_field_position
Definition: multiboot.h:177
multiboot_uint32_t addr
Definition: multiboot.h:100
unsigned short multiboot_uint16_t
Definition: multiboot.h:12
uint8_t Ychar
Definition: multiboot.h:45
uint32_t offScrOffset
Definition: multiboot.h:56
uint16_t TotalMemory
Definition: multiboot.h:31
multiboot_aout_symbol_table_t aout_sym
Definition: multiboot.h:126
multiboot_uint32_t pad
Definition: multiboot.h:210
multiboot_uint32_t shndx
Definition: multiboot.h:101
uint8_t memory_model
Definition: multiboot.h:46
multiboot_uint64_t addr
Definition: multiboot.h:194
multiboot_uint32_t drives_length
Definition: multiboot.h:135
multiboot_uint32_t checksum
Definition: multiboot.h:69
multiboot_uint16_t flags
Definition: multiboot.h:222
multiboot_uint32_t depth
Definition: multiboot.h:82
uint8_t directcolor_attributes
Definition: multiboot.h:53
multiboot_uint32_t mem_lower
Definition: multiboot.h:111
multiboot_uint8_t framebuffer_blue_mask_size
Definition: multiboot.h:178
Definition: multiboot.h:200
multiboot_uint32_t cmdline
Definition: multiboot.h:207
multiboot_uint64_t framebuffer_addr
Definition: multiboot.h:155
multiboot_uint32_t addr
Definition: multiboot.h:90
multiboot_uint8_t framebuffer_green_field_position
Definition: multiboot.h:175
Definition: multiboot.h:105
multiboot_uint32_t magic
Definition: multiboot.h:63
multiboot_uint32_t header_addr
Definition: multiboot.h:72
multiboot_uint32_t cmdline
Definition: multiboot.h:118
multiboot_uint64_t len
Definition: multiboot.h:195
uint16_t segmentB
Definition: multiboot.h:40
multiboot_uint8_t red
Definition: multiboot.h:186
multiboot_uint32_t mmap_length
Definition: multiboot.h:131
multiboot_uint32_t framebuffer_width
Definition: multiboot.h:157
multiboot_uint32_t tabsize
Definition: multiboot.h:88
multiboot_uint16_t dseg_len
Definition: multiboot.h:225
multiboot_uint32_t load_addr
Definition: multiboot.h:73
multiboot_uint32_t size
Definition: multiboot.h:193
multiboot_uint16_t framebuffer_palette_num_colors
Definition: multiboot.h:169
uint16_t VbeVersion
Definition: multiboot.h:27
multiboot_uint8_t framebuffer_green_mask_size
Definition: multiboot.h:176
multiboot_uint32_t apm_table
Definition: multiboot.h:145
multiboot_uint32_t flags
Definition: multiboot.h:66
multiboot_uint32_t bss_end_addr
Definition: multiboot.h:75
multiboot_uint32_t size
Definition: multiboot.h:99
Definition: multiboot.h:184
multiboot_uint16_t vbe_interface_len
Definition: multiboot.h:153
multiboot_uint8_t framebuffer_bpp
Definition: multiboot.h:159
multiboot_uint8_t framebuffer_red_field_position
Definition: multiboot.h:173
multiboot_uint16_t cseg_len
Definition: multiboot.h:223
uint32_t physbase
Definition: multiboot.h:55
multiboot_uint16_t vbe_interface_seg
Definition: multiboot.h:151
Definition: multiboot.h:96
multiboot_uint32_t type
Definition: multiboot.h:196
multiboot_uint32_t mode_type
Definition: multiboot.h:79
unsigned int multiboot_uint32_t
Definition: multiboot.h:13
uint8_t blue_position
Definition: multiboot.h:51
multiboot_uint32_t mmap_addr
Definition: multiboot.h:132
multiboot_uint32_t flags
Definition: multiboot.h:108
multiboot_uint32_t drives_addr
Definition: multiboot.h:136
Definition: multiboot.h:16
multiboot_uint32_t mods_count
Definition: multiboot.h:121
multiboot_uint8_t blue
Definition: multiboot.h:188
multiboot_uint32_t framebuffer_pitch
Definition: multiboot.h:156
uint8_t red_position
Definition: multiboot.h:49
multiboot_uint16_t dseg
Definition: multiboot.h:221
Definition: multiboot.h:191
unsigned long long multiboot_uint64_t
Definition: multiboot.h:14
VbeInfoBlock * vbe_control_info
Definition: multiboot.h:148
uint16_t winsize
Definition: multiboot.h:39
multiboot_uint32_t reserved
Definition: multiboot.h:91
multiboot_uint32_t mod_end
Definition: multiboot.h:204
uint8_t green_position
Definition: multiboot.h:50
union multiboot_info::@1 u
unsigned short IOPrivInfo
Definition: multiboot.h:21
multiboot_uint16_t version
Definition: multiboot.h:217
multiboot_uint16_t vbe_interface_off
Definition: multiboot.h:152
multiboot_uint32_t num
Definition: multiboot.h:98
multiboot_uint32_t mem_upper
Definition: multiboot.h:112
uint16_t Yres
Definition: multiboot.h:44
multiboot_uint16_t cseg_16
Definition: multiboot.h:220
multiboot_uint32_t framebuffer_palette_addr
Definition: multiboot.h:168
uint16_t offScrSize
Definition: multiboot.h:57
Definition: multiboot.h:215
multiboot_uint32_t offset
Definition: multiboot.h:219
uint8_t bpp
Definition: graphics.c:15
multiboot_uint32_t framebuffer_height
Definition: multiboot.h:158
ModeInfoBlock * vbe_mode_info
Definition: multiboot.h:149
uint8_t reserved0
Definition: multiboot.h:47
multiboot_elf_section_header_table_t elf_sec
Definition: multiboot.h:127
multiboot_uint16_t cseg
Definition: multiboot.h:218
uint8_t winB
Definition: multiboot.h:37
uint16_t attributes
Definition: multiboot.h:36
multiboot_uint32_t width
Definition: multiboot.h:80
unsigned short setDisplayStart
Definition: multiboot.h:19
multiboot_uint32_t mod_start
Definition: multiboot.h:203
multiboot_uint32_t entry_addr
Definition: multiboot.h:76
multiboot_uint16_t cseg_16_len
Definition: multiboot.h:224
Definition: multiboot.h:34
uint16_t pitch
Definition: multiboot.h:42
unsigned short setWindow
Definition: multiboot.h:18
multiboot_uint32_t height
Definition: multiboot.h:81
multiboot_uint16_t vbe_mode
Definition: multiboot.h:150
Definition: multiboot.h:60
multiboot_uint32_t strsize
Definition: multiboot.h:89
multiboot_uint32_t mods_addr
Definition: multiboot.h:122
multiboot_uint8_t green
Definition: multiboot.h:187
multiboot_uint8_t framebuffer_type
Definition: multiboot.h:163
uint16_t granularity
Definition: multiboot.h:38
multiboot_uint32_t boot_device
Definition: multiboot.h:115
multiboot_uint32_t boot_loader_name
Definition: multiboot.h:142