#include <linux/pe.h>
#include <linux/sizes.h>
#include <asm/set_memory.h>
.macro __EFI_PE_HEADER
.long IMAGE_NT_SIGNATURE
coff_header:
#ifdef CONFIG_64BIT
.short IMAGE_FILE_MACHINE_RISCV64
#else
.short IMAGE_FILE_MACHINE_RISCV32
#endif
.short section_count
.long 0
.long 0
.long 0
.short section_table - optional_header
.short IMAGE_FILE_DEBUG_STRIPPED | \
IMAGE_FILE_EXECUTABLE_IMAGE | \
IMAGE_FILE_LINE_NUMS_STRIPPED
optional_header:
#ifdef CONFIG_64BIT
.short IMAGE_NT_OPTIONAL_HDR64_MAGIC
#else
.short IMAGE_NT_OPTIONAL_HDR32_MAGIC
#endif
.byte 0x02
.byte 0x14
.long __pecoff_text_end - efi_header_end
#ifdef __clang__
.long __pecoff_data_virt_size
#else
.long __pecoff_data_virt_end - __pecoff_text_end
#endif
.long 0
.long __efistub_efi_pe_entry - _start
.long efi_header_end - _start
#ifdef CONFIG_32BIT
.long __pecoff_text_end - _start
#endif
extra_header_fields:
.quad 0
.long PECOFF_SECTION_ALIGNMENT
.long PECOFF_FILE_ALIGNMENT
.short 0
.short 0
.short LINUX_EFISTUB_MAJOR_VERSION
.short LINUX_EFISTUB_MINOR_VERSION
.short 0
.short 0
.long 0
.long _end - _start
.long efi_header_end - _start
.long 0
.short IMAGE_SUBSYSTEM_EFI_APPLICATION
.short IMAGE_DLLCHARACTERISTICS_NX_COMPAT
.quad 0
.quad 0
.quad 0
.quad 0
.long 0
.long (section_table - .) / 8
.quad 0
.quad 0
.quad 0
.quad 0
.quad 0
.quad 0
section_table:
.ascii ".text\0\0\0"
.long __pecoff_text_end - efi_header_end
.long efi_header_end - _start
.long __pecoff_text_end - efi_header_end
.long efi_header_end - _start
.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"
#ifdef __clang__
.long __pecoff_data_virt_size
#else
.long __pecoff_data_virt_end - __pecoff_text_end
#endif
.long __pecoff_text_end - _start
#ifdef __clang__
.long __pecoff_data_raw_size
#else
.long __pecoff_data_raw_end - __pecoff_text_end
#endif
.long __pecoff_text_end - _start
.long 0
.long 0
.short 0
.short 0
.long IMAGE_SCN_CNT_INITIALIZED_DATA | \
IMAGE_SCN_MEM_READ | \
IMAGE_SCN_MEM_WRITE
.set section_count, (. - section_table) / 40
.balign 0x1000
efi_header_end:
.endm