1
2 #ifndef _ASM_X86_BOOTPARAM_H
3 #define _ASM_X86_BOOTPARAM_H
4
5
6 #define SETUP_NONE 0
7 #define SETUP_E820_EXT 1
8 #define SETUP_DTB 2
9 #define SETUP_PCI 3
10 #define SETUP_EFI 4
11 #define SETUP_APPLE_PROPERTIES 5
12 #define SETUP_JAILHOUSE 6
13
14
15 #define RAMDISK_IMAGE_START_MASK 0x07FF
16 #define RAMDISK_PROMPT_FLAG 0x8000
17 #define RAMDISK_LOAD_FLAG 0x4000
18
19
20 #define LOADED_HIGH (1<<0)
21 #define KASLR_FLAG (1<<1)
22 #define QUIET_FLAG (1<<5)
23 #define KEEP_SEGMENTS (1<<6)
24 #define CAN_USE_HEAP (1<<7)
25
26
27 #define XLF_KERNEL_64 (1<<0)
28 #define XLF_CAN_BE_LOADED_ABOVE_4G (1<<1)
29 #define XLF_EFI_HANDOVER_32 (1<<2)
30 #define XLF_EFI_HANDOVER_64 (1<<3)
31 #define XLF_EFI_KEXEC (1<<4)
32 #define XLF_5LEVEL (1<<5)
33 #define XLF_5LEVEL_ENABLED (1<<6)
34
35 #ifndef __ASSEMBLY__
36
37 #include <linux/types.h>
38 #include <linux/screen_info.h>
39 #include <linux/apm_bios.h>
40 #include <linux/edd.h>
41 #include <asm/ist.h>
42 #include <video/edid.h>
43
44
45 struct setup_data {
46 __u64 next;
47 __u32 type;
48 __u32 len;
49 __u8 data[0];
50 };
51
52 struct setup_header {
53 __u8 setup_sects;
54 __u16 root_flags;
55 __u32 syssize;
56 __u16 ram_size;
57 __u16 vid_mode;
58 __u16 root_dev;
59 __u16 boot_flag;
60 __u16 jump;
61 __u32 header;
62 __u16 version;
63 __u32 realmode_swtch;
64 __u16 start_sys_seg;
65 __u16 kernel_version;
66 __u8 type_of_loader;
67 __u8 loadflags;
68 __u16 setup_move_size;
69 __u32 code32_start;
70 __u32 ramdisk_image;
71 __u32 ramdisk_size;
72 __u32 bootsect_kludge;
73 __u16 heap_end_ptr;
74 __u8 ext_loader_ver;
75 __u8 ext_loader_type;
76 __u32 cmd_line_ptr;
77 __u32 initrd_addr_max;
78 __u32 kernel_alignment;
79 __u8 relocatable_kernel;
80 __u8 min_alignment;
81 __u16 xloadflags;
82 __u32 cmdline_size;
83 __u32 hardware_subarch;
84 __u64 hardware_subarch_data;
85 __u32 payload_offset;
86 __u32 payload_length;
87 __u64 setup_data;
88 __u64 pref_address;
89 __u32 init_size;
90 __u32 handover_offset;
91 } __attribute__((packed));
92
93 struct sys_desc_table {
94 __u16 length;
95 __u8 table[14];
96 };
97
98
99 struct olpc_ofw_header {
100 __u32 ofw_magic;
101 __u32 ofw_version;
102 __u32 cif_handler;
103 __u32 irq_desc_table;
104 } __attribute__((packed));
105
106 struct efi_info {
107 __u32 efi_loader_signature;
108 __u32 efi_systab;
109 __u32 efi_memdesc_size;
110 __u32 efi_memdesc_version;
111 __u32 efi_memmap;
112 __u32 efi_memmap_size;
113 __u32 efi_systab_hi;
114 __u32 efi_memmap_hi;
115 };
116
117
118
119
120
121 #define E820_MAX_ENTRIES_ZEROPAGE 128
122
123
124
125
126 struct boot_e820_entry {
127 __u64 addr;
128 __u64 size;
129 __u32 type;
130 } __attribute__((packed));
131
132
133
134
135 #define JAILHOUSE_SETUP_REQUIRED_VERSION 1
136
137
138
139
140
141 struct jailhouse_setup_data {
142 __u16 version;
143 __u16 compatible_version;
144 __u16 pm_timer_address;
145 __u16 num_cpus;
146 __u64 pci_mmconfig_base;
147 __u32 tsc_khz;
148 __u32 apic_khz;
149 __u8 standard_ioapic;
150 __u8 cpu_ids[255];
151 } __attribute__((packed));
152
153
154 struct boot_params {
155 struct screen_info screen_info;
156 struct apm_bios_info apm_bios_info;
157 __u8 _pad2[4];
158 __u64 tboot_addr;
159 struct ist_info ist_info;
160 __u64 acpi_rsdp_addr;
161 __u8 _pad3[8];
162 __u8 hd0_info[16];
163 __u8 hd1_info[16];
164 struct sys_desc_table sys_desc_table;
165 struct olpc_ofw_header olpc_ofw_header;
166 __u32 ext_ramdisk_image;
167 __u32 ext_ramdisk_size;
168 __u32 ext_cmd_line_ptr;
169 __u8 _pad4[116];
170 struct edid_info edid_info;
171 struct efi_info efi_info;
172 __u32 alt_mem_k;
173 __u32 scratch;
174 __u8 e820_entries;
175 __u8 eddbuf_entries;
176 __u8 edd_mbr_sig_buf_entries;
177 __u8 kbd_status;
178 __u8 secure_boot;
179 __u8 _pad5[2];
180
181
182
183
184
185
186
187
188
189
190
191 __u8 sentinel;
192 __u8 _pad6[1];
193 struct setup_header hdr;
194 __u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)];
195 __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];
196 struct boot_e820_entry e820_table[E820_MAX_ENTRIES_ZEROPAGE];
197 __u8 _pad8[48];
198 struct edd_info eddbuf[EDDMAXNR];
199 __u8 _pad9[276];
200 } __attribute__((packed));
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241 enum x86_hardware_subarch {
242 X86_SUBARCH_PC = 0,
243 X86_SUBARCH_LGUEST,
244 X86_SUBARCH_XEN,
245 X86_SUBARCH_INTEL_MID,
246 X86_SUBARCH_CE4100,
247 X86_NR_SUBARCHS,
248 };
249
250 #endif
251
252 #endif