File Index
Files and directories
Sign in
FILE

zboot-header.S

File preview with syntax highlighting.

linux-6.19.14/drivers/firmware/efi/libstub/zboot-header.S GAS
  1/* SPDX-License-Identifier: GPL-2.0 */
  2
  3#include <linux/pe.h>
  4
  5#ifdef CONFIG_64BIT
  6	.set		.Lextra_characteristics, 0x0
  7	.set		.Lpe_opt_magic, IMAGE_NT_OPTIONAL_HDR64_MAGIC
  8#else
  9	.set		.Lextra_characteristics, IMAGE_FILE_32BIT_MACHINE
 10	.set		.Lpe_opt_magic, IMAGE_NT_OPTIONAL_HDR32_MAGIC
 11#endif
 12
 13	.section	".head", "a"
 14	.globl		__efistub_efi_zboot_header
 15__efistub_efi_zboot_header:
 16.Ldoshdr:
 17	.long		IMAGE_DOS_SIGNATURE
 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
 23	.org		.Ldoshdr + 0x38
 24	.long		LINUX_PE_MAGIC
 25	.long		.Lpehdr - .Ldoshdr			// PE header offset
 26
 27.Lpehdr:
 28	.long		IMAGE_NT_SIGNATURE
 29	.short		MACHINE_TYPE
 30	.short		.Lsection_count
 31	.long		0
 32	.long		0
 33	.long		0
 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
 39
 40.Loptional_header:
 41	.short		.Lpe_opt_magic
 42	.byte		0, 0
 43	.long		_etext - .Lefi_header_end
 44	.long		__data_size
 45	.long		0
 46	.long		__efistub_efi_zboot_entry - .Ldoshdr
 47	.long		.Lefi_header_end - .Ldoshdr
 48
 49#ifdef CONFIG_64BIT
 50	.quad		0
 51#else
 52	.long		_etext - .Ldoshdr, 0x0
 53#endif
 54	.long		4096
 55	.long		512
 56	.short		0, 0
 57	.short		LINUX_EFISTUB_MAJOR_VERSION	// MajorImageVersion
 58	.short		LINUX_EFISTUB_MINOR_VERSION	// MinorImageVersion
 59	.short		0, 0
 60	.long		0
 61	.long		_end - .Ldoshdr
 62
 63	.long		.Lefi_header_end - .Ldoshdr
 64	.long		0
 65	.short		IMAGE_SUBSYSTEM_EFI_APPLICATION
 66	.short		IMAGE_DLLCHARACTERISTICS_NX_COMPAT
 67#ifdef CONFIG_64BIT
 68	.quad		0, 0, 0, 0
 69#else
 70	.long		0, 0, 0, 0
 71#endif
 72	.long		0
 73	.long		(.Lsection_table - .) / 8
 74
 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
 84
 85	.section	".rodata", "a"
 86	.p2align	2
 87.Lefi_debug_table:
 88	// EFI_IMAGE_DEBUG_DIRECTORY_ENTRY[]
 89#ifdef PE_DLL_CHAR_EX
 90	.long		0					// Characteristics
 91	.long		0					// TimeDateStamp
 92	.short		0					// MajorVersion
 93	.short		0					// MinorVersion
 94	.long		IMAGE_DEBUG_TYPE_EX_DLLCHARACTERISTICS	// Type
 95	.long		4					// SizeOfData
 96	.long		0					// RVA
 97	.long		.Lefi_dll_characteristics_ex - .Ldoshdr	// FileOffset
 98#endif
 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
106	.long		0					// RVA
107	.long		.Lefi_debug_entry - .Ldoshdr		// FileOffset
108#endif
109	.set		.Lefi_debug_table_size, . - .Lefi_debug_table
110	.previous
111#endif
112
113.Lsection_table:
114	.ascii		".text\0\0\0"
115	.long		_etext - .Lefi_header_end
116	.long		.Lefi_header_end - .Ldoshdr
117	.long		_etext - .Lefi_header_end
118	.long		.Lefi_header_end - .Ldoshdr
119
120	.long		0, 0
121	.short		0, 0
122	.long		IMAGE_SCN_CNT_CODE | \
123			IMAGE_SCN_MEM_READ | \
124			IMAGE_SCN_MEM_EXECUTE
125
126#ifdef CONFIG_EFI_SBAT
127	.ascii		".sbat\0\0\0"
128	.long		__sbat_size
129	.long		_sbat - .Ldoshdr
130	.long		__sbat_size
131	.long		_sbat - .Ldoshdr
132
133	.long		0, 0
134	.short		0, 0
135	.long		IMAGE_SCN_CNT_INITIALIZED_DATA | \
136			IMAGE_SCN_MEM_READ | \
137			IMAGE_SCN_MEM_DISCARDABLE
138
139	.pushsection ".sbat", "a", @progbits
140	.incbin CONFIG_EFI_SBAT_FILE
141	.popsection
142#endif
143
144	.ascii		".data\0\0\0"
145	.long		__data_size
146	.long		_data - .Ldoshdr
147	.long		__data_rawsize
148	.long		_data - .Ldoshdr
149
150	.long		0, 0
151	.short		0, 0
152	.long		IMAGE_SCN_CNT_INITIALIZED_DATA | \
153			IMAGE_SCN_MEM_READ | \
154			IMAGE_SCN_MEM_WRITE
155
156	.set		.Lsection_count, (. - .Lsection_table) / 40
157
158#ifdef PE_DLL_CHAR_EX
159.Lefi_dll_characteristics_ex:
160	.long		PE_DLL_CHAR_EX
161#endif
162#ifdef CONFIG_DEBUG_EFI
163.Lefi_debug_entry:
164	// EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY
165	.ascii		"NB10"				// Signature
166	.long		0				// Unknown
167	.long		0				// Unknown2
168	.long		0				// Unknown3
169
170	.asciz		ZBOOT_EFI_PATH
171
172	.set		.Lefi_debug_entry_size, . - .Lefi_debug_entry
173#endif
174
175	.p2align	12
176.Lefi_header_end:
177
~/ Read-only file preview.