Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | /* SPDX-License-Identifier: GPL-2.0 */ #include <linux/pe.h> #ifdef CONFIG_64BIT .set .Lextra_characteristics, 0x0 .set .Lpe_opt_magic, PE_OPT_MAGIC_PE32PLUS #else .set .Lextra_characteristics, IMAGE_FILE_32BIT_MACHINE .set .Lpe_opt_magic, PE_OPT_MAGIC_PE32 #endif .section ".head", "a" .globl __efistub_efi_zboot_header __efistub_efi_zboot_header: .Ldoshdr: .long MZ_MAGIC .ascii "zimg" // image type .long __efistub__gzdata_start - .Ldoshdr // payload offset .long __efistub__gzdata_size - ZBOOT_SIZE_LEN // payload size .long 0, 0 // reserved .asciz COMP_TYPE // compression type .org .Ldoshdr + 0x38 .long LINUX_PE_MAGIC .long .Lpehdr - .Ldoshdr // PE header offset .Lpehdr: .long PE_MAGIC .short MACHINE_TYPE .short .Lsection_count .long 0 .long 0 .long 0 .short .Lsection_table - .Loptional_header .short IMAGE_FILE_DEBUG_STRIPPED | \ IMAGE_FILE_EXECUTABLE_IMAGE | \ IMAGE_FILE_LINE_NUMS_STRIPPED |\ .Lextra_characteristics .Loptional_header: .short .Lpe_opt_magic .byte 0, 0 .long _etext - .Lefi_header_end .long __data_size .long 0 .long __efistub_efi_zboot_entry - .Ldoshdr .long .Lefi_header_end - .Ldoshdr #ifdef CONFIG_64BIT .quad 0 #else .long _etext - .Ldoshdr, 0x0 #endif .long 4096 .long 512 .short 0, 0 .short LINUX_EFISTUB_MAJOR_VERSION // MajorImageVersion .short LINUX_EFISTUB_MINOR_VERSION // MinorImageVersion .short 0, 0 .long 0 .long _end - .Ldoshdr .long .Lefi_header_end - .Ldoshdr .long 0 .short IMAGE_SUBSYSTEM_EFI_APPLICATION .short IMAGE_DLL_CHARACTERISTICS_NX_COMPAT #ifdef CONFIG_64BIT .quad 0, 0, 0, 0 #else .long 0, 0, 0, 0 #endif .long 0 .long (.Lsection_table - .) / 8 .quad 0 // ExportTable .quad 0 // ImportTable .quad 0 // ResourceTable .quad 0 // ExceptionTable .quad 0 // CertificationTable .quad 0 // BaseRelocationTable #if defined(PE_DLL_CHAR_EX) || defined(CONFIG_DEBUG_EFI) .long .Lefi_debug_table - .Ldoshdr // DebugTable .long .Lefi_debug_table_size .section ".rodata", "a" .p2align 2 .Lefi_debug_table: // EFI_IMAGE_DEBUG_DIRECTORY_ENTRY[] #ifdef PE_DLL_CHAR_EX .long 0 // Characteristics .long 0 // TimeDateStamp .short 0 // MajorVersion .short 0 // MinorVersion .long IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS // Type .long 4 // SizeOfData .long 0 // RVA .long .Lefi_dll_characteristics_ex - .Ldoshdr // FileOffset #endif #ifdef CONFIG_DEBUG_EFI .long 0 // Characteristics .long 0 // TimeDateStamp .short 0 // MajorVersion .short 0 // MinorVersion .long IMAGE_DEBUG_TYPE_CODEVIEW // Type .long .Lefi_debug_entry_size // SizeOfData .long 0 // RVA .long .Lefi_debug_entry - .Ldoshdr // FileOffset #endif .set .Lefi_debug_table_size, . - .Lefi_debug_table .previous #endif .Lsection_table: .ascii ".text\0\0\0" .long _etext - .Lefi_header_end .long .Lefi_header_end - .Ldoshdr .long _etext - .Lefi_header_end .long .Lefi_header_end - .Ldoshdr .long 0, 0 .short 0, 0 .long IMAGE_SCN_CNT_CODE | \ IMAGE_SCN_MEM_READ | \ IMAGE_SCN_MEM_EXECUTE .ascii ".data\0\0\0" .long __data_size .long _etext - .Ldoshdr .long __data_rawsize .long _etext - .Ldoshdr .long 0, 0 .short 0, 0 .long IMAGE_SCN_CNT_INITIALIZED_DATA | \ IMAGE_SCN_MEM_READ | \ IMAGE_SCN_MEM_WRITE .set .Lsection_count, (. - .Lsection_table) / 40 #ifdef PE_DLL_CHAR_EX .Lefi_dll_characteristics_ex: .long PE_DLL_CHAR_EX #endif #ifdef CONFIG_DEBUG_EFI .Lefi_debug_entry: // EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY .ascii "NB10" // Signature .long 0 // Unknown .long 0 // Unknown2 .long 0 // Unknown3 .asciz ZBOOT_EFI_PATH .set .Lefi_debug_entry_size, . - .Lefi_debug_entry #endif .p2align 12 .Lefi_header_end: |