160 lines · plain
1/* SPDX-License-Identifier: GPL-2.0 */2 3#include <linux/pe.h>4 5#ifdef CONFIG_64BIT6 .set .Lextra_characteristics, 0x07 .set .Lpe_opt_magic, PE_OPT_MAGIC_PE32PLUS8#else9 .set .Lextra_characteristics, IMAGE_FILE_32BIT_MACHINE10 .set .Lpe_opt_magic, PE_OPT_MAGIC_PE3211#endif12 13 .section ".head", "a"14 .globl __efistub_efi_zboot_header15__efistub_efi_zboot_header:16.Ldoshdr:17 .long MZ_MAGIC18 .ascii "zimg" // image type19 .long __efistub__gzdata_start - .Ldoshdr // payload offset20 .long __efistub__gzdata_size - ZBOOT_SIZE_LEN // payload size21 .long 0, 0 // reserved22 .asciz COMP_TYPE // compression type23 .org .Ldoshdr + 0x3824 .long LINUX_PE_MAGIC25 .long .Lpehdr - .Ldoshdr // PE header offset26 27.Lpehdr:28 .long PE_MAGIC29 .short MACHINE_TYPE30 .short .Lsection_count31 .long 032 .long 033 .long 034 .short .Lsection_table - .Loptional_header35 .short IMAGE_FILE_DEBUG_STRIPPED | \36 IMAGE_FILE_EXECUTABLE_IMAGE | \37 IMAGE_FILE_LINE_NUMS_STRIPPED |\38 .Lextra_characteristics39 40.Loptional_header:41 .short .Lpe_opt_magic42 .byte 0, 043 .long _etext - .Lefi_header_end44 .long __data_size45 .long 046 .long __efistub_efi_zboot_entry - .Ldoshdr47 .long .Lefi_header_end - .Ldoshdr48 49#ifdef CONFIG_64BIT50 .quad 051#else52 .long _etext - .Ldoshdr, 0x053#endif54 .long 409655 .long 51256 .short 0, 057 .short LINUX_EFISTUB_MAJOR_VERSION // MajorImageVersion58 .short LINUX_EFISTUB_MINOR_VERSION // MinorImageVersion59 .short 0, 060 .long 061 .long _end - .Ldoshdr62 63 .long .Lefi_header_end - .Ldoshdr64 .long 065 .short IMAGE_SUBSYSTEM_EFI_APPLICATION66 .short IMAGE_DLL_CHARACTERISTICS_NX_COMPAT67#ifdef CONFIG_64BIT68 .quad 0, 0, 0, 069#else70 .long 0, 0, 0, 071#endif72 .long 073 .long (.Lsection_table - .) / 874 75 .quad 0 // ExportTable76 .quad 0 // ImportTable77 .quad 0 // ResourceTable78 .quad 0 // ExceptionTable79 .quad 0 // CertificationTable80 .quad 0 // BaseRelocationTable81#if defined(PE_DLL_CHAR_EX) || defined(CONFIG_DEBUG_EFI)82 .long .Lefi_debug_table - .Ldoshdr // DebugTable83 .long .Lefi_debug_table_size84 85 .section ".rodata", "a"86 .p2align 287.Lefi_debug_table:88 // EFI_IMAGE_DEBUG_DIRECTORY_ENTRY[]89#ifdef PE_DLL_CHAR_EX90 .long 0 // Characteristics91 .long 0 // TimeDateStamp92 .short 0 // MajorVersion93 .short 0 // MinorVersion94 .long IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS // Type95 .long 4 // SizeOfData96 .long 0 // RVA97 .long .Lefi_dll_characteristics_ex - .Ldoshdr // FileOffset98#endif99#ifdef CONFIG_DEBUG_EFI100 .long 0 // Characteristics101 .long 0 // TimeDateStamp102 .short 0 // MajorVersion103 .short 0 // MinorVersion104 .long IMAGE_DEBUG_TYPE_CODEVIEW // Type105 .long .Lefi_debug_entry_size // SizeOfData106 .long 0 // RVA107 .long .Lefi_debug_entry - .Ldoshdr // FileOffset108#endif109 .set .Lefi_debug_table_size, . - .Lefi_debug_table110 .previous111#endif112 113.Lsection_table:114 .ascii ".text\0\0\0"115 .long _etext - .Lefi_header_end116 .long .Lefi_header_end - .Ldoshdr117 .long _etext - .Lefi_header_end118 .long .Lefi_header_end - .Ldoshdr119 120 .long 0, 0121 .short 0, 0122 .long IMAGE_SCN_CNT_CODE | \123 IMAGE_SCN_MEM_READ | \124 IMAGE_SCN_MEM_EXECUTE125 126 .ascii ".data\0\0\0"127 .long __data_size128 .long _etext - .Ldoshdr129 .long __data_rawsize130 .long _etext - .Ldoshdr131 132 .long 0, 0133 .short 0, 0134 .long IMAGE_SCN_CNT_INITIALIZED_DATA | \135 IMAGE_SCN_MEM_READ | \136 IMAGE_SCN_MEM_WRITE137 138 .set .Lsection_count, (. - .Lsection_table) / 40139 140#ifdef PE_DLL_CHAR_EX141.Lefi_dll_characteristics_ex:142 .long PE_DLL_CHAR_EX143#endif144#ifdef CONFIG_DEBUG_EFI145.Lefi_debug_entry:146 // EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY147 .ascii "NB10" // Signature148 .long 0 // Unknown149 .long 0 // Unknown2150 .long 0 // Unknown3151 152 .asciz ZBOOT_EFI_PATH153 154 .set .Lefi_debug_entry_size, . - .Lefi_debug_entry155#endif156 157 .p2align 12158.Lefi_header_end:159 160