1 /* SPDX-License-Identifier: LGPL-2.1+ */
4 #define SETUP_MAGIC 0x53726448 /* "HdrS" */
17 UINT32 realmode_swtch
;
19 UINT16 kernel_version
;
22 UINT16 setup_move_size
;
26 UINT32 bootsect_kludge
;
29 UINT8 ext_loader_type
;
31 UINT32 initrd_addr_max
;
32 UINT32 kernel_alignment
;
33 UINT8 relocatable_kernel
;
37 UINT32 hardware_subarch
;
38 UINT64 hardware_subarch_data
;
39 UINT32 payload_offset
;
40 UINT32 payload_length
;
44 UINT32 handover_offset
;
45 } __attribute__((packed
));
47 /* adapted from linux' bootparam.h */
49 UINT8 screen_info
[64]; // was: struct screen_info
50 UINT8 apm_bios_info
[20]; // was: struct apm_bios_info
53 UINT8 ist_info
[16]; // was: struct ist_info
57 UINT8 sys_desc_table
[16]; // was: struct sys_desc_table
58 UINT8 olpc_ofw_header
[16]; // was: struct olpc_ofw_header
59 UINT32 ext_ramdisk_image
;
60 UINT32 ext_ramdisk_size
;
61 UINT32 ext_cmd_line_ptr
;
63 UINT8 edid_info
[128]; // was: struct edid_info
64 UINT8 efi_info
[32]; // was: struct efi_info
69 UINT8 edd_mbr_sig_buf_entries
;
75 struct setup_header hdr
;
76 UINT8 _pad7
[0x290-0x1f1-sizeof(struct setup_header
)];
77 UINT32 edd_mbr_sig_buffer
[16]; // was: edd_mbr_sig_buffer[EDD_MBR_SIG_MAX]
78 UINT8 e820_table
[20*128]; // was: struct boot_e820_entry e820_table[E820_MAX_ENTRIES_ZEROPAGE]
80 UINT8 eddbuf
[6*82]; // was: struct edd_info eddbuf[EDDMAXNR]
82 } __attribute__((packed
));
84 EFI_STATUS
linux_exec(EFI_HANDLE
*image
,
85 CHAR8
*cmdline
, UINTN cmdline_size
,
87 UINTN initrd_addr
, UINTN initrd_size
);