blob: 9b0b25cef991da73944ecd09f821419d0ae298fe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
#ifndef __LINUX_BOOT_PARAMS_H__
#define __LINUX_BOOT_PARAMS_H__
#include <asm/types.h>
#define E820MAX 32
struct mem_map {
int nr_map;
struct entry {
unsigned long long addr; /* start of memory segment */
unsigned long long size; /* size of memory segment */
unsigned long type; /* type of memory segment */
#define E820_RAM 1
#define E820_RESERVED 2
#define E820_ACPI 3 /* usable as RAM once ACPI tables have been read */
#define E820_NVS 4
#define E820_IO 16
#define E820_SHARED 17
unsigned long caching_attr; /* used by hypervisor */
#define MEMMAP_UC 0
#define MEMMAP_WC 1
#define MEMMAP_WT 4
#define MEMMAP_WP 5
#define MEMMAP_WB 6
}map[E820MAX];
};
struct e820entry {
unsigned long long addr; /* start of memory segment */
unsigned long long size; /* size of memory segment */
unsigned long type; /* type of memory segment */
};
struct e820map {
int nr_map;
struct e820entry map[E820MAX];
};
struct drive_info_struct { __u8 dummy[32]; };
struct sys_desc_table {
__u16 length;
__u8 table[318];
};
struct screen_info {
unsigned char orig_x; /* 0x00 */
unsigned char orig_y; /* 0x01 */
unsigned short dontuse1; /* 0x02 -- EXT_MEM_K sits here */
unsigned short orig_video_page; /* 0x04 */
unsigned char orig_video_mode; /* 0x06 */
unsigned char orig_video_cols; /* 0x07 */
unsigned short unused2; /* 0x08 */
unsigned short orig_video_ega_bx; /* 0x0a */
unsigned short unused3; /* 0x0c */
unsigned char orig_video_lines; /* 0x0e */
unsigned char orig_video_isVGA; /* 0x0f */
unsigned short orig_video_points; /* 0x10 */
/* VESA graphic mode -- linear frame buffer */
unsigned short lfb_width; /* 0x12 */
unsigned short lfb_height; /* 0x14 */
unsigned short lfb_depth; /* 0x16 */
unsigned long lfb_base; /* 0x18 */
unsigned long lfb_size; /* 0x1c */
unsigned short dontuse2, dontuse3; /* 0x20 -- CL_MAGIC and CL_OFFSET here */
unsigned short lfb_linelength; /* 0x24 */
unsigned char red_size; /* 0x26 */
unsigned char red_pos; /* 0x27 */
unsigned char green_size; /* 0x28 */
unsigned char green_pos; /* 0x29 */
unsigned char blue_size; /* 0x2a */
unsigned char blue_pos; /* 0x2b */
unsigned char rsvd_size; /* 0x2c */
unsigned char rsvd_pos; /* 0x2d */
unsigned short vesapm_seg; /* 0x2e */
unsigned short vesapm_off; /* 0x30 */
unsigned short pages; /* 0x32 */
/* 0x34 -- 0x3f reserved for future expansion */
};
struct screen_info_overlap {
__u8 reserved1[2]; /* 0x00 */
__u16 ext_mem_k; /* 0x02 */
__u8 reserved2[0x20 - 0x04]; /* 0x04 */
__u16 cl_magic; /* 0x20 */
#define CL_MAGIC_VALUE 0xA33F
__u16 cl_offset; /* 0x22 */
__u8 reserved3[0x40 - 0x24]; /* 0x24 */
};
struct apm_bios_info {
__u16 version;
__u16 cseg;
__u32 offset;
__u16 cseg_16;
__u16 dseg;
__u16 flags;
__u16 cseg_len;
__u16 cseg_16_len;
__u16 dseg_len;
};
struct linux_boot_params {
union { /* 0x00 */
struct screen_info info;
struct screen_info_overlap overlap;
} screen;
struct apm_bios_info apm_bios_info; /* 0x40 */
__u8 reserved4[0x80 - 0x54]; /* 0x54 */
struct drive_info_struct drive_info; /* 0x80 */
struct sys_desc_table sys_desc_table; /* 0xa0 */
__u32 alt_mem_k; /* 0x1e0 */
__u8 reserved5[4]; /* 0x1e4 */
__u8 e820_map_nr; /* 0x1e8 */
__u8 reserved6[8]; /* 0x1e9 */
__u8 setup_sects; /* 0x1f1 */
__u16 mount_root_rdonly; /* 0x1f2 */
__u16 syssize; /* 0x1f4 */
__u16 swapdev; /* 0x1f6 */
__u16 ramdisk_flags; /* 0x1f8 */
#define RAMDISK_IMAGE_START_MASK 0x07FF
#define RAMDISK_PROMPT_FLAG 0x8000
#define RAMDISK_LOAD_FLAG 0x4000
__u16 vid_mode; /* 0x1fa */
__u16 root_dev; /* 0x1fc */
__u8 reserved9[1]; /* 0x1fe */
__u8 aux_device_info; /* 0x1ff */
/* 2.00+ */
__u8 reserved10[2]; /* 0x200 */
__u8 header_magic[4]; /* 0x202 */
__u16 protocol_version; /* 0x206 */
__u8 reserved11[8]; /* 0x208 */
__u8 loader_type; /* 0x210 */
#define LOADER_TYPE_LOADLIN 1
#define LOADER_TYPE_BOOTSECT_LOADER 2
#define LOADER_TYPE_SYSLINUX 3
#define LOADER_TYPE_ETHERBOOT 4
#define LOADER_TYPE_UNKNOWN 0xFF
__u8 loader_flags; /* 0x211 */
__u8 reserved12[2]; /* 0x212 */
__u32 code32_start; /* 0x214 */
__u32 initrd_start; /* 0x218 */
__u32 initrd_size; /* 0x21c */
__u8 reserved13[4]; /* 0x220 */
/* 2.01+ */
__u16 heap_end_ptr; /* 0x224 */
__u8 reserved14[2]; /* 0x226 */
/* 2.02+ */
__u32 cmd_line_ptr; /* 0x228 */
/* 2.03+ */
__u32 ramdisk_max; /* 0x22c */
__u8 reserved15[0x2d0 - 0x230]; /* 0x230 */
struct e820entry e820_map[E820MAX]; /* 0x2d0 */
__u64 shared_info; /* 0x550 */
__u8 padding[0x800 - 0x558]; /* 0x558 */
__u8 cmd_line[0x800]; /* 0x800 */
} __attribute__((packed));
#endif /* __LINUX_BOOT_PARAMS_H__ */
|