Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/x86/include/asm/bootparam.h
10821 views
1
#ifndef _ASM_X86_BOOTPARAM_H
2
#define _ASM_X86_BOOTPARAM_H
3
4
#include <linux/types.h>
5
#include <linux/screen_info.h>
6
#include <linux/apm_bios.h>
7
#include <linux/edd.h>
8
#include <asm/e820.h>
9
#include <asm/ist.h>
10
#include <video/edid.h>
11
12
/* setup data types */
13
#define SETUP_NONE 0
14
#define SETUP_E820_EXT 1
15
#define SETUP_DTB 2
16
17
/* extensible setup data list node */
18
struct setup_data {
19
__u64 next;
20
__u32 type;
21
__u32 len;
22
__u8 data[0];
23
};
24
25
struct setup_header {
26
__u8 setup_sects;
27
__u16 root_flags;
28
__u32 syssize;
29
__u16 ram_size;
30
#define RAMDISK_IMAGE_START_MASK 0x07FF
31
#define RAMDISK_PROMPT_FLAG 0x8000
32
#define RAMDISK_LOAD_FLAG 0x4000
33
__u16 vid_mode;
34
__u16 root_dev;
35
__u16 boot_flag;
36
__u16 jump;
37
__u32 header;
38
__u16 version;
39
__u32 realmode_swtch;
40
__u16 start_sys;
41
__u16 kernel_version;
42
__u8 type_of_loader;
43
__u8 loadflags;
44
#define LOADED_HIGH (1<<0)
45
#define QUIET_FLAG (1<<5)
46
#define KEEP_SEGMENTS (1<<6)
47
#define CAN_USE_HEAP (1<<7)
48
__u16 setup_move_size;
49
__u32 code32_start;
50
__u32 ramdisk_image;
51
__u32 ramdisk_size;
52
__u32 bootsect_kludge;
53
__u16 heap_end_ptr;
54
__u8 ext_loader_ver;
55
__u8 ext_loader_type;
56
__u32 cmd_line_ptr;
57
__u32 initrd_addr_max;
58
__u32 kernel_alignment;
59
__u8 relocatable_kernel;
60
__u8 _pad2[3];
61
__u32 cmdline_size;
62
__u32 hardware_subarch;
63
__u64 hardware_subarch_data;
64
__u32 payload_offset;
65
__u32 payload_length;
66
__u64 setup_data;
67
} __attribute__((packed));
68
69
struct sys_desc_table {
70
__u16 length;
71
__u8 table[14];
72
};
73
74
/* Gleaned from OFW's set-parameters in cpu/x86/pc/linux.fth */
75
struct olpc_ofw_header {
76
__u32 ofw_magic; /* OFW signature */
77
__u32 ofw_version;
78
__u32 cif_handler; /* callback into OFW */
79
__u32 irq_desc_table;
80
} __attribute__((packed));
81
82
struct efi_info {
83
__u32 efi_loader_signature;
84
__u32 efi_systab;
85
__u32 efi_memdesc_size;
86
__u32 efi_memdesc_version;
87
__u32 efi_memmap;
88
__u32 efi_memmap_size;
89
__u32 efi_systab_hi;
90
__u32 efi_memmap_hi;
91
};
92
93
/* The so-called "zeropage" */
94
struct boot_params {
95
struct screen_info screen_info; /* 0x000 */
96
struct apm_bios_info apm_bios_info; /* 0x040 */
97
__u8 _pad2[4]; /* 0x054 */
98
__u64 tboot_addr; /* 0x058 */
99
struct ist_info ist_info; /* 0x060 */
100
__u8 _pad3[16]; /* 0x070 */
101
__u8 hd0_info[16]; /* obsolete! */ /* 0x080 */
102
__u8 hd1_info[16]; /* obsolete! */ /* 0x090 */
103
struct sys_desc_table sys_desc_table; /* 0x0a0 */
104
struct olpc_ofw_header olpc_ofw_header; /* 0x0b0 */
105
__u8 _pad4[128]; /* 0x0c0 */
106
struct edid_info edid_info; /* 0x140 */
107
struct efi_info efi_info; /* 0x1c0 */
108
__u32 alt_mem_k; /* 0x1e0 */
109
__u32 scratch; /* Scratch field! */ /* 0x1e4 */
110
__u8 e820_entries; /* 0x1e8 */
111
__u8 eddbuf_entries; /* 0x1e9 */
112
__u8 edd_mbr_sig_buf_entries; /* 0x1ea */
113
__u8 _pad6[6]; /* 0x1eb */
114
struct setup_header hdr; /* setup header */ /* 0x1f1 */
115
__u8 _pad7[0x290-0x1f1-sizeof(struct setup_header)];
116
__u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX]; /* 0x290 */
117
struct e820entry e820_map[E820MAX]; /* 0x2d0 */
118
__u8 _pad8[48]; /* 0xcd0 */
119
struct edd_info eddbuf[EDDMAXNR]; /* 0xd00 */
120
__u8 _pad9[276]; /* 0xeec */
121
} __attribute__((packed));
122
123
enum {
124
X86_SUBARCH_PC = 0,
125
X86_SUBARCH_LGUEST,
126
X86_SUBARCH_XEN,
127
X86_SUBARCH_MRST,
128
X86_SUBARCH_CE4100,
129
X86_NR_SUBARCHS,
130
};
131
132
133
134
#endif /* _ASM_X86_BOOTPARAM_H */
135
136