Avoid namespace clashes
[people/xl0/gpxe.git] / src / arch / i386 / include / multiboot.h
1 /* multiboot.h - the header for Multiboot */
2 /* Copyright (C) 1999, 2001  Free Software Foundation, Inc.
3    
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 2 of the License, or
7    (at your option) any later version.
8    
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13    
14    You should have received a copy of the GNU General Public License
15    along with this program; if not, write to the Free Software
16    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
17
18 /* Macros.  */
19
20 /* The magic number for the Multiboot header.  */
21 #define MULTIBOOT_HEADER_MAGIC          0x1BADB002
22
23 /* The flags for the Multiboot header.  */
24 #ifdef __ELF__
25 # define MULTIBOOT_HEADER_FLAGS         0x00000003
26 #else
27 # define MULTIBOOT_HEADER_FLAGS         0x00010003
28 #endif
29
30 /* The magic number passed by a Multiboot-compliant boot loader.  */
31 #define MULTIBOOT_BOOTLOADER_MAGIC      0x2BADB002
32
33 /* The size of our stack (16KB).  */
34 #define STACK_SIZE                      0x4000
35
36 /* C symbol format. HAVE_ASM_USCORE is defined by configure.  */
37 #ifdef HAVE_ASM_USCORE
38 # define EXT_C(sym)                     _ ## sym
39 #else
40 # define EXT_C(sym)                     sym
41 #endif
42
43 #ifndef ASM
44 /* Do not include here in boot.S.  */
45
46 /* Types.  */
47
48 /* The Multiboot header.  */
49 typedef struct multiboot_header
50 {
51   unsigned long magic;
52   unsigned long flags;
53   unsigned long checksum;
54   unsigned long header_addr;
55   unsigned long load_addr;
56   unsigned long load_end_addr;
57   unsigned long bss_end_addr;
58   unsigned long entry_addr;
59 } multiboot_header_t;
60
61 /* The symbol table for a.out.  */
62 typedef struct multiboot_aout_symbol_table
63 {
64   unsigned long tabsize;
65   unsigned long strsize;
66   unsigned long addr;
67   unsigned long reserved;
68 } multiboot_aout_symbol_table_t;
69
70 /* The section header table for ELF.  */
71 typedef struct multiboot_elf_section_header_table
72 {
73   unsigned long num;
74   unsigned long size;
75   unsigned long addr;
76   unsigned long shndx;
77 } multiboot_elf_section_header_table_t;
78
79 /* The Multiboot information.  */
80 typedef struct multiboot_info
81 {
82   unsigned long flags;
83   unsigned long mem_lower;
84   unsigned long mem_upper;
85   unsigned long boot_device;
86   unsigned long cmdline;
87   unsigned long mods_count;
88   unsigned long mods_addr;
89   union
90   {
91     multiboot_aout_symbol_table_t aout_sym;
92     multiboot_elf_section_header_table_t elf_sec;
93   } u;
94   unsigned long mmap_length;
95   unsigned long mmap_addr;
96   unsigned long drives_length;
97   unsigned long drives_addr;
98   unsigned long config_table;
99   unsigned long boot_loader_name;
100   unsigned long apm_table;
101   unsigned long vbe_control_info;
102   unsigned long vbe_mode_info;
103   unsigned short vbe_mode;
104   unsigned short vbe_interface_seg;
105   unsigned short vbe_interface_off;
106   unsigned short vbe_interface_len;
107 } multiboot_info_t;
108
109 /* The module structure.  */
110 typedef struct multiboot_module
111 {
112   unsigned long mod_start;
113   unsigned long mod_end;
114   unsigned long string;
115   unsigned long reserved;
116 } multiboot_module_t;
117
118 /* The memory map. Be careful that the offset 0 is base_addr_low
119    but no size.  */
120 typedef struct multiboot_memory_map
121 {
122   unsigned long size;
123   unsigned long base_addr_low;
124   unsigned long base_addr_high;
125   unsigned long length_low;
126   unsigned long length_high;
127   unsigned long type;
128 } multiboot_memory_map_t;
129
130 #endif /* ! ASM */
131
132 /*
133  * Local variables:
134  *  c-basic-offset: 2
135  * End:
136  */