1 /* multiboot.h - multiboot header file. */
3 * GRUB -- GRand Unified Bootloader
4 * Copyright (C) 2003,2007 Free Software Foundation, Inc.
6 * GRUB is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
11 * GRUB is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef MULTIBOOT_HEADER
21 #define MULTIBOOT_HEADER 1
23 /* How many bytes from the start of the file we search for the header. */
24 #define MULTIBOOT_SEARCH 8192
26 /* The magic field should contain this. */
27 #define MULTIBOOT_MAGIC 0x1BADB002
29 /* This should be in %eax. */
30 #define MULTIBOOT_MAGIC2 0x2BADB002
32 /* The bits in the required part of flags field we don't support. */
33 #define MULTIBOOT_UNSUPPORTED 0x0000fffc
35 /* Alignment of multiboot modules. */
36 #define MULTIBOOT_MOD_ALIGN 0x00001000
39 * Flags set in the 'flags' member of the multiboot header.
42 /* Align all boot modules on i386 page (4KB) boundaries. */
43 #define MULTIBOOT_PAGE_ALIGN 0x00000001
45 /* Must pass memory information to OS. */
46 #define MULTIBOOT_MEMORY_INFO 0x00000002
48 /* Must pass video information to OS. */
49 #define MULTIBOOT_VIDEO_MODE 0x00000004
51 /* This flag indicates the use of the address fields in the header. */
52 #define MULTIBOOT_AOUT_KLUDGE 0x00010000
55 * Flags to be set in the 'flags' member of the multiboot info structure.
58 /* is there basic lower/upper memory information? */
59 #define MULTIBOOT_INFO_MEMORY 0x00000001
60 /* is there a boot device set? */
61 #define MULTIBOOT_INFO_BOOTDEV 0x00000002
62 /* is the command-line defined? */
63 #define MULTIBOOT_INFO_CMDLINE 0x00000004
64 /* are there modules to do something with? */
65 #define MULTIBOOT_INFO_MODS 0x00000008
67 /* These next two are mutually exclusive */
69 /* is there a symbol table loaded? */
70 #define MULTIBOOT_INFO_AOUT_SYMS 0x00000010
71 /* is there an ELF section header table? */
72 #define MULTIBOOT_INFO_ELF_SHDR 0x00000020
74 /* is there a full memory map? */
75 #define MULTIBOOT_INFO_MEM_MAP 0x00000040
77 /* Is there drive info? */
78 #define MULTIBOOT_INFO_DRIVE_INFO 0x00000080
80 /* Is there a config table? */
81 #define MULTIBOOT_INFO_CONFIG_TABLE 0x00000100
83 /* Is there a boot loader name? */
84 #define MULTIBOOT_INFO_BOOT_LOADER_NAME 0x00000200
86 /* Is there a APM table? */
87 #define MULTIBOOT_INFO_APM_TABLE 0x00000400
89 /* Is there video information? */
90 #define MULTIBOOT_INFO_VIDEO_INFO 0x00000800
92 #endif /* ! MULTIBOOT_HEADER */