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