1 /* SPDX-License-Identifier: GPL-2.0 */
6 .set .Lextra_characteristics, 0x0
7 .set .Lpe_opt_magic, PE_OPT_MAGIC_PE32PLUS
9 .set .Lextra_characteristics, IMAGE_FILE_32BIT_MACHINE
10 .set .Lpe_opt_magic, PE_OPT_MAGIC_PE32
14 .globl __efistub_efi_zboot_header
15 __efistub_efi_zboot_header:
18 .ascii "zimg" // image type
19 .long __efistub__gzdata_start - .Ldoshdr // payload offset
20 .long __efistub__gzdata_size - ZBOOT_SIZE_LEN // payload size
21 .long 0, 0 // reserved
22 .asciz COMP_TYPE // compression type
25 .long .Lpehdr - .Ldoshdr // PE header offset
30 .short .Lsection_count
34 .short .Lsection_table - .Loptional_header
35 .short IMAGE_FILE_DEBUG_STRIPPED | \
36 IMAGE_FILE_EXECUTABLE_IMAGE | \
37 IMAGE_FILE_LINE_NUMS_STRIPPED |\
38 .Lextra_characteristics
43 .long _etext - .Lefi_header_end
46 .long __efistub_efi_zboot_entry - .Ldoshdr
47 .long .Lefi_header_end - .Ldoshdr
52 .long _etext - .Ldoshdr, 0x0
57 .short LINUX_EFISTUB_MAJOR_VERSION // MajorImageVersion
58 .short LINUX_EFISTUB_MINOR_VERSION // MinorImageVersion
63 .long .Lefi_header_end - .Ldoshdr
65 .short IMAGE_SUBSYSTEM_EFI_APPLICATION
66 .short IMAGE_DLL_CHARACTERISTICS_NX_COMPAT
73 .long (.Lsection_table - .) / 8
75 .quad 0 // ExportTable
76 .quad 0 // ImportTable
77 .quad 0 // ResourceTable
78 .quad 0 // ExceptionTable
79 .quad 0 // CertificationTable
80 .quad 0 // BaseRelocationTable
81 #if defined(PE_DLL_CHAR_EX) || defined(CONFIG_DEBUG_EFI)
82 .long .Lefi_debug_table - .Ldoshdr // DebugTable
83 .long .Lefi_debug_table_size
85 .section ".rodata", "a"
88 // EFI_IMAGE_DEBUG_DIRECTORY_ENTRY[]
90 .long 0 // Characteristics
91 .long 0 // TimeDateStamp
92 .short 0 // MajorVersion
93 .short 0 // MinorVersion
94 .long IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS // Type
97 .long .Lefi_dll_characteristics_ex - .Ldoshdr // FileOffset
99 #ifdef CONFIG_DEBUG_EFI
100 .long 0 // Characteristics
101 .long 0 // TimeDateStamp
102 .short 0 // MajorVersion
103 .short 0 // MinorVersion
104 .long IMAGE_DEBUG_TYPE_CODEVIEW // Type
105 .long .Lefi_debug_entry_size // SizeOfData
107 .long .Lefi_debug_entry - .Ldoshdr // FileOffset
109 .set .Lefi_debug_table_size, . - .Lefi_debug_table
115 .long _etext - .Lefi_header_end
116 .long .Lefi_header_end - .Ldoshdr
117 .long _etext - .Lefi_header_end
118 .long .Lefi_header_end - .Ldoshdr
122 .long IMAGE_SCN_CNT_CODE | \
123 IMAGE_SCN_MEM_READ | \
124 IMAGE_SCN_MEM_EXECUTE
128 .long _etext - .Ldoshdr
130 .long _etext - .Ldoshdr
134 .long IMAGE_SCN_CNT_INITIALIZED_DATA | \
135 IMAGE_SCN_MEM_READ | \
138 .set .Lsection_count, (. - .Lsection_table) / 40
140 #ifdef PE_DLL_CHAR_EX
141 .Lefi_dll_characteristics_ex:
144 #ifdef CONFIG_DEBUG_EFI
146 // EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY
147 .ascii "NB10" // Signature
152 .asciz ZBOOT_EFI_PATH
154 .set .Lefi_debug_entry_size, . - .Lefi_debug_entry