GitOS
Operating system exercise
Loading...
Searching...
No Matches
multiboot.h
Go to the documentation of this file.
1/* multiboot.h - Multiboot 2 header file. */
2/* Copyright (C) 1999,2003,2007,2008,2009,2010 Free Software Foundation, Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to
6 * deal in the Software without restriction, including without limitation the
7 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8 * sell copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ANY
17 * DEVELOPER OR DISTRIBUTOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
18 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
19 * IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 */
21
22#ifndef MULTIBOOT_HEADER
23#define MULTIBOOT_HEADER 1
24
25/* How many bytes from the start of the file we search for the header. */
26#define MULTIBOOT_SEARCH 32768
27#define MULTIBOOT_HEADER_ALIGN 8
28
29/* The magic field should contain this. */
30#define MULTIBOOT2_HEADER_MAGIC 0xe85250d6
31
32/* This should be in %eax. */
33#define MULTIBOOT2_BOOTLOADER_MAGIC 0x36d76289
34
35/* Alignment of multiboot modules. */
36#define MULTIBOOT_MOD_ALIGN 0x00001000
37
38/* Alignment of the multiboot info structure. */
39#define MULTIBOOT_INFO_ALIGN 0x00000008
40
41/* Flags set in the 'flags' member of the multiboot header. */
42
43#define MULTIBOOT_TAG_ALIGN 8
44#define MULTIBOOT_TAG_TYPE_END 0
45#define MULTIBOOT_TAG_TYPE_CMDLINE 1
46#define MULTIBOOT_TAG_TYPE_BOOT_LOADER_NAME 2
47#define MULTIBOOT_TAG_TYPE_MODULE 3
48#define MULTIBOOT_TAG_TYPE_BASIC_MEMINFO 4
49#define MULTIBOOT_TAG_TYPE_BOOTDEV 5
50#define MULTIBOOT_TAG_TYPE_MMAP 6
51#define MULTIBOOT_TAG_TYPE_VBE 7
52#define MULTIBOOT_TAG_TYPE_FRAMEBUFFER 8
53#define MULTIBOOT_TAG_TYPE_ELF_SECTIONS 9
54#define MULTIBOOT_TAG_TYPE_APM 10
55#define MULTIBOOT_TAG_TYPE_EFI32 11
56#define MULTIBOOT_TAG_TYPE_EFI64 12
57#define MULTIBOOT_TAG_TYPE_SMBIOS 13
58#define MULTIBOOT_TAG_TYPE_ACPI_OLD 14
59#define MULTIBOOT_TAG_TYPE_ACPI_NEW 15
60#define MULTIBOOT_TAG_TYPE_NETWORK 16
61#define MULTIBOOT_TAG_TYPE_EFI_MMAP 17
62#define MULTIBOOT_TAG_TYPE_EFI_BS 18
63#define MULTIBOOT_TAG_TYPE_EFI32_IH 19
64#define MULTIBOOT_TAG_TYPE_EFI64_IH 20
65#define MULTIBOOT_TAG_TYPE_LOAD_BASE_ADDR 21
66
67#define MULTIBOOT_HEADER_TAG_END 0
68#define MULTIBOOT_HEADER_TAG_INFORMATION_REQUEST 1
69#define MULTIBOOT_HEADER_TAG_ADDRESS 2
70#define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS 3
71#define MULTIBOOT_HEADER_TAG_CONSOLE_FLAGS 4
72#define MULTIBOOT_HEADER_TAG_FRAMEBUFFER 5
73#define MULTIBOOT_HEADER_TAG_MODULE_ALIGN 6
74#define MULTIBOOT_HEADER_TAG_EFI_BS 7
75#define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI32 8
76#define MULTIBOOT_HEADER_TAG_ENTRY_ADDRESS_EFI64 9
77#define MULTIBOOT_HEADER_TAG_RELOCATABLE 10
78
79#define MULTIBOOT_ARCHITECTURE_I386 0
80#define MULTIBOOT_ARCHITECTURE_MIPS32 4
81#define MULTIBOOT_HEADER_TAG_OPTIONAL 1
82
83#define MULTIBOOT_LOAD_PREFERENCE_NONE 0
84#define MULTIBOOT_LOAD_PREFERENCE_LOW 1
85#define MULTIBOOT_LOAD_PREFERENCE_HIGH 2
86
87#define MULTIBOOT_CONSOLE_FLAGS_CONSOLE_REQUIRED 1
88#define MULTIBOOT_CONSOLE_FLAGS_EGA_TEXT_SUPPORTED 2
89
90#ifndef ASM_FILE
91
92typedef unsigned char multiboot_uint8_t;
93typedef unsigned short multiboot_uint16_t;
94typedef unsigned int multiboot_uint32_t;
95typedef unsigned long long multiboot_uint64_t;
96
98{
99 /* Must be MULTIBOOT_MAGIC - see above. */
101
102 /* ISA */
104
105 /* Total header length. */
107
108 /* The above fields plus this one must equal 0 mod 2^32. */
110};
111
118
126
137
145
153
163
170
181
188
190{
193#define MULTIBOOT_MEMORY_AVAILABLE 1
194#define MULTIBOOT_MEMORY_RESERVED 2
195#define MULTIBOOT_MEMORY_ACPI_RECLAIMABLE 3
196#define MULTIBOOT_MEMORY_NVS 4
197#define MULTIBOOT_MEMORY_BADRAM 5
200};
202
208
215
224
232
241
250
255
260
274
291
314
324
339
346
353
363
370
377
384
393
400
407
414
415#endif /* ! ASM_FILE */
416
417#endif /* ! MULTIBOOT_HEADER */
unsigned int multiboot_uint32_t
Definition multiboot.h:94
unsigned char multiboot_uint8_t
Definition multiboot.h:92
unsigned short multiboot_uint16_t
Definition multiboot.h:93
unsigned long long multiboot_uint64_t
Definition multiboot.h:95
Definition multiboot.h:183
multiboot_uint8_t red
Definition multiboot.h:184
multiboot_uint8_t green
Definition multiboot.h:185
multiboot_uint8_t blue
Definition multiboot.h:186
Definition multiboot.h:128
multiboot_uint32_t bss_end_addr
Definition multiboot.h:135
multiboot_uint16_t flags
Definition multiboot.h:130
multiboot_uint32_t load_addr
Definition multiboot.h:133
multiboot_uint32_t size
Definition multiboot.h:131
multiboot_uint16_t type
Definition multiboot.h:129
multiboot_uint32_t header_addr
Definition multiboot.h:132
multiboot_uint32_t load_end_addr
Definition multiboot.h:134
Definition multiboot.h:147
multiboot_uint32_t console_flags
Definition multiboot.h:151
multiboot_uint16_t flags
Definition multiboot.h:149
multiboot_uint32_t size
Definition multiboot.h:150
multiboot_uint16_t type
Definition multiboot.h:148
Definition multiboot.h:139
multiboot_uint32_t entry_addr
Definition multiboot.h:143
multiboot_uint16_t flags
Definition multiboot.h:141
multiboot_uint32_t size
Definition multiboot.h:142
multiboot_uint16_t type
Definition multiboot.h:140
Definition multiboot.h:155
multiboot_uint16_t flags
Definition multiboot.h:157
multiboot_uint32_t size
Definition multiboot.h:158
multiboot_uint16_t type
Definition multiboot.h:156
multiboot_uint32_t width
Definition multiboot.h:159
multiboot_uint32_t height
Definition multiboot.h:160
multiboot_uint32_t depth
Definition multiboot.h:161
multiboot_uint16_t flags
Definition multiboot.h:122
multiboot_uint32_t size
Definition multiboot.h:123
multiboot_uint16_t type
Definition multiboot.h:121
multiboot_uint32_t requests[0]
Definition multiboot.h:124
Definition multiboot.h:165
multiboot_uint16_t flags
Definition multiboot.h:167
multiboot_uint32_t size
Definition multiboot.h:168
multiboot_uint16_t type
Definition multiboot.h:166
Definition multiboot.h:172
multiboot_uint32_t min_addr
Definition multiboot.h:176
multiboot_uint16_t flags
Definition multiboot.h:174
multiboot_uint32_t preference
Definition multiboot.h:179
multiboot_uint32_t size
Definition multiboot.h:175
multiboot_uint16_t type
Definition multiboot.h:173
multiboot_uint32_t align
Definition multiboot.h:178
multiboot_uint32_t max_addr
Definition multiboot.h:177
Definition multiboot.h:113
multiboot_uint16_t flags
Definition multiboot.h:115
multiboot_uint32_t size
Definition multiboot.h:116
multiboot_uint16_t type
Definition multiboot.h:114
Definition multiboot.h:98
multiboot_uint32_t header_length
Definition multiboot.h:106
multiboot_uint32_t magic
Definition multiboot.h:100
multiboot_uint32_t architecture
Definition multiboot.h:103
multiboot_uint32_t checksum
Definition multiboot.h:109
Definition multiboot.h:190
multiboot_uint64_t len
Definition multiboot.h:192
multiboot_uint64_t addr
Definition multiboot.h:191
multiboot_uint32_t type
Definition multiboot.h:198
multiboot_uint32_t zero
Definition multiboot.h:199
Definition multiboot.h:326
multiboot_uint16_t cseg_16_len
Definition multiboot.h:336
multiboot_uint32_t offset
Definition multiboot.h:331
multiboot_uint16_t flags
Definition multiboot.h:334
multiboot_uint16_t cseg_len
Definition multiboot.h:335
multiboot_uint16_t dseg
Definition multiboot.h:333
multiboot_uint32_t size
Definition multiboot.h:328
multiboot_uint32_t type
Definition multiboot.h:327
multiboot_uint16_t dseg_len
Definition multiboot.h:337
multiboot_uint16_t cseg
Definition multiboot.h:330
multiboot_uint16_t version
Definition multiboot.h:329
multiboot_uint16_t cseg_16
Definition multiboot.h:332
Definition multiboot.h:226
multiboot_uint32_t size
Definition multiboot.h:228
multiboot_uint32_t type
Definition multiboot.h:227
multiboot_uint32_t mem_lower
Definition multiboot.h:229
multiboot_uint32_t mem_upper
Definition multiboot.h:230
Definition multiboot.h:234
multiboot_uint32_t part
Definition multiboot.h:239
multiboot_uint32_t biosdev
Definition multiboot.h:237
multiboot_uint32_t size
Definition multiboot.h:236
multiboot_uint32_t type
Definition multiboot.h:235
multiboot_uint32_t slice
Definition multiboot.h:238
Definition multiboot.h:395
multiboot_uint32_t size
Definition multiboot.h:397
multiboot_uint32_t type
Definition multiboot.h:396
multiboot_uint32_t pointer
Definition multiboot.h:398
Definition multiboot.h:341
multiboot_uint32_t size
Definition multiboot.h:343
multiboot_uint32_t type
Definition multiboot.h:342
multiboot_uint32_t pointer
Definition multiboot.h:344
Definition multiboot.h:402
multiboot_uint32_t size
Definition multiboot.h:404
multiboot_uint32_t type
Definition multiboot.h:403
multiboot_uint64_t pointer
Definition multiboot.h:405
Definition multiboot.h:348
multiboot_uint32_t size
Definition multiboot.h:350
multiboot_uint32_t type
Definition multiboot.h:349
multiboot_uint64_t pointer
Definition multiboot.h:351
Definition multiboot.h:386
multiboot_uint32_t descr_size
Definition multiboot.h:389
multiboot_uint32_t size
Definition multiboot.h:388
multiboot_uint32_t type
Definition multiboot.h:387
multiboot_uint8_t efi_mmap[0]
Definition multiboot.h:391
multiboot_uint32_t descr_vers
Definition multiboot.h:390
Definition multiboot.h:316
multiboot_uint32_t num
Definition multiboot.h:319
multiboot_uint32_t size
Definition multiboot.h:318
multiboot_uint32_t type
Definition multiboot.h:317
multiboot_uint32_t entsize
Definition multiboot.h:320
multiboot_uint32_t shndx
Definition multiboot.h:321
char sections[0]
Definition multiboot.h:322
Definition multiboot.h:276
multiboot_uint8_t framebuffer_type
Definition multiboot.h:288
multiboot_uint32_t size
Definition multiboot.h:278
multiboot_uint32_t framebuffer_width
Definition multiboot.h:282
multiboot_uint64_t framebuffer_addr
Definition multiboot.h:280
multiboot_uint32_t type
Definition multiboot.h:277
multiboot_uint16_t reserved
Definition multiboot.h:289
multiboot_uint32_t framebuffer_pitch
Definition multiboot.h:281
multiboot_uint8_t framebuffer_bpp
Definition multiboot.h:284
multiboot_uint32_t framebuffer_height
Definition multiboot.h:283
Definition multiboot.h:293
multiboot_uint8_t framebuffer_green_mask_size
Definition multiboot.h:308
multiboot_uint8_t framebuffer_red_field_position
Definition multiboot.h:305
struct multiboot_color framebuffer_palette[0]
Definition multiboot.h:301
multiboot_uint8_t framebuffer_green_field_position
Definition multiboot.h:307
multiboot_uint8_t framebuffer_red_mask_size
Definition multiboot.h:306
multiboot_uint16_t framebuffer_palette_num_colors
Definition multiboot.h:300
struct multiboot_tag_framebuffer_common common
Definition multiboot.h:294
multiboot_uint8_t framebuffer_blue_field_position
Definition multiboot.h:309
multiboot_uint8_t framebuffer_blue_mask_size
Definition multiboot.h:310
Definition multiboot.h:409
multiboot_uint32_t size
Definition multiboot.h:411
multiboot_uint32_t type
Definition multiboot.h:410
multiboot_uint32_t load_base_addr
Definition multiboot.h:412
Definition multiboot.h:243
multiboot_uint32_t entry_version
Definition multiboot.h:247
multiboot_uint32_t size
Definition multiboot.h:245
struct multiboot_mmap_entry entries[0]
Definition multiboot.h:248
multiboot_uint32_t type
Definition multiboot.h:244
multiboot_uint32_t entry_size
Definition multiboot.h:246
Definition multiboot.h:217
multiboot_uint32_t mod_end
Definition multiboot.h:221
char cmdline[0]
Definition multiboot.h:222
multiboot_uint32_t size
Definition multiboot.h:219
multiboot_uint32_t mod_start
Definition multiboot.h:220
multiboot_uint32_t type
Definition multiboot.h:218
Definition multiboot.h:379
multiboot_uint8_t dhcpack[0]
Definition multiboot.h:382
multiboot_uint32_t size
Definition multiboot.h:381
multiboot_uint32_t type
Definition multiboot.h:380
Definition multiboot.h:372
multiboot_uint8_t rsdp[0]
Definition multiboot.h:375
multiboot_uint32_t size
Definition multiboot.h:374
multiboot_uint32_t type
Definition multiboot.h:373
Definition multiboot.h:365
multiboot_uint8_t rsdp[0]
Definition multiboot.h:368
multiboot_uint32_t size
Definition multiboot.h:367
multiboot_uint32_t type
Definition multiboot.h:366
Definition multiboot.h:355
multiboot_uint8_t major
Definition multiboot.h:358
multiboot_uint8_t reserved[6]
Definition multiboot.h:360
multiboot_uint8_t minor
Definition multiboot.h:359
multiboot_uint32_t size
Definition multiboot.h:357
multiboot_uint32_t type
Definition multiboot.h:356
multiboot_uint8_t tables[0]
Definition multiboot.h:361
Definition multiboot.h:210
multiboot_uint32_t size
Definition multiboot.h:212
multiboot_uint32_t type
Definition multiboot.h:211
Definition multiboot.h:262
multiboot_uint16_t vbe_interface_seg
Definition multiboot.h:267
struct multiboot_vbe_mode_info_block vbe_mode_info
Definition multiboot.h:272
multiboot_uint16_t vbe_interface_len
Definition multiboot.h:269
multiboot_uint32_t size
Definition multiboot.h:264
struct multiboot_vbe_info_block vbe_control_info
Definition multiboot.h:271
multiboot_uint16_t vbe_interface_off
Definition multiboot.h:268
multiboot_uint32_t type
Definition multiboot.h:263
multiboot_uint16_t vbe_mode
Definition multiboot.h:266
Definition multiboot.h:204
multiboot_uint32_t size
Definition multiboot.h:206
multiboot_uint32_t type
Definition multiboot.h:205
Definition multiboot.h:252
multiboot_uint8_t external_specification[512]
Definition multiboot.h:253
Definition multiboot.h:257
multiboot_uint8_t external_specification[256]
Definition multiboot.h:258