]> git.proxmox.com Git - mirror_edk2.git/blame - OvmfPkg/Include/IndustryStandard/LinuxBzimage.h
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / OvmfPkg / Include / IndustryStandard / LinuxBzimage.h
CommitLineData
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
ac0a286f
MK
11#define BOOTSIG 0x1FE\r
12#define SETUP_HDR 0x53726448 /* 0x53726448 == "HdrS" */\r
80feb819 13\r
ac0a286f
MK
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
80feb819 19\r
20#pragma pack(1)\r
21\r
22struct setup_header {\r
ac0a286f
MK
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
42 UINT32 ramdisk_len; /* Length of initial ramdisk */\r
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
51 UINT8 min_alignment;\r
52 UINT16 xloadflags;\r
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
80feb819 62};\r
63\r
64struct efi_info {\r
ac0a286f
MK
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
80feb819 73};\r
74\r
75struct e820_entry {\r
ac0a286f
MK
76 UINT64 addr; /* start of memory segment */\r
77 UINT64 size; /* size of memory segment */\r
78 UINT32 type; /* type of memory segment */\r
80feb819 79};\r
80\r
81struct screen_info {\r
ac0a286f
MK
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
80feb819 118};\r
119\r
120struct boot_params {\r
ac0a286f
MK
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
80feb819 147};\r
148\r
149typedef struct {\r
ac0a286f
MK
150 UINT16 limit;\r
151 UINT64 *base;\r
80feb819 152} dt_addr_t;\r
153\r
154#pragma pack()\r
155\r
ac0a286f
MK
156extern EFI_STATUS\r
157setup_graphics (\r
158 struct boot_params *buf\r
159 );\r
80feb819 160\r
161#endif /* __LINUX_BZIMAGE_H__ */\r