]>
Commit | Line | Data |
---|---|---|
80feb819 | 1 | /** @file\r |
2 | \r | |
25ca06f9 | 3 | Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>\r |
b26f0cf9 | 4 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
80feb819 | 5 | \r |
6 | **/\r | |
7 | \r | |
8 | #ifndef __LINUX_BZIMAGE_H__\r | |
9 | #define __LINUX_BZIMAGE_H__\r | |
10 | \r | |
11 | #define BOOTSIG 0x1FE\r | |
80feb819 | 12 | #define SETUP_HDR 0x53726448 /* 0x53726448 == "HdrS" */\r |
13 | \r | |
14 | #define E820_RAM 1\r | |
15 | #define E820_RESERVED 2\r | |
16 | #define E820_ACPI 3\r | |
17 | #define E820_NVS 4\r | |
18 | #define E820_UNUSABLE 5\r | |
19 | \r | |
20 | #pragma pack(1)\r | |
21 | \r | |
22 | struct setup_header {\r | |
23 | UINT8 setup_secs; /* Sectors for setup code */\r | |
24 | UINT16 root_flags;\r | |
25 | UINT32 sys_size;\r | |
26 | UINT16 ram_size;\r | |
27 | UINT16 video_mode;\r | |
28 | UINT16 root_dev;\r | |
29 | UINT16 signature; /* Boot signature */\r | |
30 | UINT16 jump;\r | |
31 | UINT32 header;\r | |
32 | UINT16 version;\r | |
33 | UINT16 su_switch;\r | |
34 | UINT16 setup_seg;\r | |
35 | UINT16 start_sys;\r | |
36 | UINT16 kernel_ver;\r | |
37 | UINT8 loader_id;\r | |
38 | UINT8 load_flags;\r | |
39 | UINT16 movesize;\r | |
40 | UINT32 code32_start; /* Start of code loaded high */\r | |
41 | UINT32 ramdisk_start; /* Start of initial ramdisk */\r | |
b6b33f67 | 42 | UINT32 ramdisk_len; /* Length of initial ramdisk */\r |
80feb819 | 43 | UINT32 bootsect_kludge;\r |
44 | UINT16 heap_end;\r | |
45 | UINT8 ext_loader_ver; /* Extended boot loader version */\r | |
46 | UINT8 ext_loader_type; /* Extended boot loader ID */\r | |
47 | UINT32 cmd_line_ptr; /* 32-bit pointer to the kernel command line */\r | |
48 | UINT32 ramdisk_max; /* Highest legal initrd address */\r | |
49 | UINT32 kernel_alignment; /* Physical addr alignment required for kernel */\r | |
50 | UINT8 relocatable_kernel; /* Whether kernel is relocatable or not */\r | |
25ca06f9 | 51 | UINT8 min_alignment;\r |
52 | UINT16 xloadflags;\r | |
80feb819 | 53 | UINT32 cmdline_size;\r |
54 | UINT32 hardware_subarch;\r | |
55 | UINT64 hardware_subarch_data;\r | |
56 | UINT32 payload_offset;\r | |
57 | UINT32 payload_length;\r | |
58 | UINT64 setup_data;\r | |
59 | UINT64 pref_address;\r | |
60 | UINT32 init_size;\r | |
61 | UINT32 handover_offset;\r | |
62 | };\r | |
63 | \r | |
64 | struct efi_info {\r | |
65 | UINT32 efi_loader_signature;\r | |
66 | UINT32 efi_systab;\r | |
67 | UINT32 efi_memdesc_size;\r | |
68 | UINT32 efi_memdesc_version;\r | |
69 | UINT32 efi_memmap;\r | |
70 | UINT32 efi_memmap_size;\r | |
71 | UINT32 efi_systab_hi;\r | |
72 | UINT32 efi_memmap_hi;\r | |
73 | };\r | |
74 | \r | |
75 | struct e820_entry {\r | |
76 | UINT64 addr; /* start of memory segment */\r | |
77 | UINT64 size; /* size of memory segment */\r | |
78 | UINT32 type; /* type of memory segment */\r | |
79 | };\r | |
80 | \r | |
81 | struct screen_info {\r | |
82 | UINT8 orig_x; /* 0x00 */\r | |
83 | UINT8 orig_y; /* 0x01 */\r | |
84 | UINT16 ext_mem_k; /* 0x02 */\r | |
85 | UINT16 orig_video_page; /* 0x04 */\r | |
86 | UINT8 orig_video_mode; /* 0x06 */\r | |
87 | UINT8 orig_video_cols; /* 0x07 */\r | |
88 | UINT8 flags; /* 0x08 */\r | |
89 | UINT8 unused2; /* 0x09 */\r | |
90 | UINT16 orig_video_ega_bx;/* 0x0a */\r | |
91 | UINT16 unused3; /* 0x0c */\r | |
92 | UINT8 orig_video_lines; /* 0x0e */\r | |
93 | UINT8 orig_video_isVGA; /* 0x0f */\r | |
94 | UINT16 orig_video_points;/* 0x10 */\r | |
95 | \r | |
96 | /* VESA graphic mode -- linear frame buffer */\r | |
97 | UINT16 lfb_width; /* 0x12 */\r | |
98 | UINT16 lfb_height; /* 0x14 */\r | |
99 | UINT16 lfb_depth; /* 0x16 */\r | |
100 | UINT32 lfb_base; /* 0x18 */\r | |
101 | UINT32 lfb_size; /* 0x1c */\r | |
102 | UINT16 cl_magic, cl_offset; /* 0x20 */\r | |
103 | UINT16 lfb_linelength; /* 0x24 */\r | |
104 | UINT8 red_size; /* 0x26 */\r | |
105 | UINT8 red_pos; /* 0x27 */\r | |
106 | UINT8 green_size; /* 0x28 */\r | |
107 | UINT8 green_pos; /* 0x29 */\r | |
108 | UINT8 blue_size; /* 0x2a */\r | |
109 | UINT8 blue_pos; /* 0x2b */\r | |
110 | UINT8 rsvd_size; /* 0x2c */\r | |
111 | UINT8 rsvd_pos; /* 0x2d */\r | |
112 | UINT16 vesapm_seg; /* 0x2e */\r | |
113 | UINT16 vesapm_off; /* 0x30 */\r | |
114 | UINT16 pages; /* 0x32 */\r | |
115 | UINT16 vesa_attributes; /* 0x34 */\r | |
116 | UINT32 capabilities; /* 0x36 */\r | |
117 | UINT8 _reserved[6]; /* 0x3a */\r | |
118 | };\r | |
119 | \r | |
120 | struct boot_params {\r | |
121 | struct screen_info screen_info;\r | |
122 | UINT8 apm_bios_info[0x14];\r | |
123 | UINT8 _pad2[4];\r | |
124 | UINT64 tboot_addr;\r | |
125 | UINT8 ist_info[0x10];\r | |
126 | UINT8 _pad3[16];\r | |
127 | UINT8 hd0_info[16];\r | |
128 | UINT8 hd1_info[16];\r | |
129 | UINT8 sys_desc_table[0x10];\r | |
130 | UINT8 olpc_ofw_header[0x10];\r | |
131 | UINT8 _pad4[128];\r | |
132 | UINT8 edid_info[0x80];\r | |
133 | struct efi_info efi_info;\r | |
134 | UINT32 alt_mem_k;\r | |
135 | UINT32 scratch;\r | |
136 | UINT8 e820_entries;\r | |
137 | UINT8 eddbuf_entries;\r | |
138 | UINT8 edd_mbr_sig_buf_entries;\r | |
139 | UINT8 _pad6[6];\r | |
140 | struct setup_header hdr;\r | |
141 | UINT8 _pad7[0x290-0x1f1-sizeof(struct setup_header)];\r | |
142 | UINT32 edd_mbr_sig_buffer[16];\r | |
143 | struct e820_entry e820_map[128];\r | |
144 | UINT8 _pad8[48];\r | |
145 | UINT8 eddbuf[0x1ec];\r | |
146 | UINT8 _pad9[276];\r | |
147 | };\r | |
148 | \r | |
149 | typedef struct {\r | |
150 | UINT16 limit;\r | |
151 | UINT64 *base;\r | |
152 | } dt_addr_t;\r | |
153 | \r | |
154 | #pragma pack()\r | |
155 | \r | |
156 | extern EFI_STATUS setup_graphics(struct boot_params *buf);\r | |
157 | \r | |
158 | #endif /* __LINUX_BZIMAGE_H__ */\r |