#include <linux/pe.h>
#include <linux/sizes.h>
.macro __EFI_PE_HEADER
.long IMAGE_NT_SIGNATURE
.Lcoff_header:
#ifdef CONFIG_32BIT
.short IMAGE_FILE_MACHINE_LOONGARCH32
#else
.short IMAGE_FILE_MACHINE_LOONGARCH64
#endif
.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
.Loptional_header:
.short IMAGE_NT_OPTIONAL_HDR64_MAGIC
.byte 0x02
.byte 0x14
.long __inittext_end - .Lefi_header_end
.long _kernel_vsize
.long 0
.long __efistub_efi_pe_entry - _head
.long .Lefi_header_end - _head
.Lextra_header_fields:
.quad 0
.long PECOFF_SEGMENT_ALIGN
.long PECOFF_FILE_ALIGN
.short 0
.short 0
.short LINUX_EFISTUB_MAJOR_VERSION
.short LINUX_EFISTUB_MINOR_VERSION
.short 0
.short 0
.long 0
.long _end - _head
.long .Lefi_header_end - _head
.long 0
.short IMAGE_SUBSYSTEM_EFI_APPLICATION
.short 0
.quad 0
.quad 0
.quad 0
.quad 0
.long 0
.long (.Lsection_table - .) / 8
.quad 0
.quad 0
.quad 0
.quad 0
.quad 0
.quad 0
.Lsection_table:
.ascii ".text\0\0\0"
.long __inittext_end - .Lefi_header_end
.long .Lefi_header_end - _head
.long __inittext_end - .Lefi_header_end
.long .Lefi_header_end - _head
.long 0
.long 0
.short 0
.short 0
.long IMAGE_SCN_CNT_CODE | \
IMAGE_SCN_MEM_READ | \
IMAGE_SCN_MEM_EXECUTE
.ascii ".data\0\0\0"
.long _kernel_vsize
.long __initdata_begin - _head
.long _kernel_rsize
.long __initdata_begin - _head
.long 0
.long 0
.short 0
.short 0
.long IMAGE_SCN_CNT_INITIALIZED_DATA | \
IMAGE_SCN_MEM_READ | \
IMAGE_SCN_MEM_WRITE
.set .Lsection_count, (. - .Lsection_table) / 40
.balign 0x10000
.Lefi_header_end:
.endm