/* SPDX-License-Identifier: GPL-2.0 */1/*2* Copyright (C) 2020-2022 Loongson Technology Corporation Limited3*/45#include <linux/pe.h>6#include <linux/sizes.h>78.macro __EFI_PE_HEADER9.long IMAGE_NT_SIGNATURE10.Lcoff_header:11#ifdef CONFIG_32BIT12.short IMAGE_FILE_MACHINE_LOONGARCH32 /* Machine */13#else14.short IMAGE_FILE_MACHINE_LOONGARCH64 /* Machine */15#endif16.short .Lsection_count /* NumberOfSections */17.long 0 /* TimeDateStamp */18.long 0 /* PointerToSymbolTable */19.long 0 /* NumberOfSymbols */20.short .Lsection_table - .Loptional_header /* SizeOfOptionalHeader */21.short IMAGE_FILE_DEBUG_STRIPPED | \22IMAGE_FILE_EXECUTABLE_IMAGE | \23IMAGE_FILE_LINE_NUMS_STRIPPED /* Characteristics */2425.Loptional_header:26.short IMAGE_NT_OPTIONAL_HDR64_MAGIC /* PE32+ format */27.byte 0x02 /* MajorLinkerVersion */28.byte 0x14 /* MinorLinkerVersion */29.long __inittext_end - .Lefi_header_end /* SizeOfCode */30.long _kernel_vsize /* SizeOfInitializedData */31.long 0 /* SizeOfUninitializedData */32.long __efistub_efi_pe_entry - _head /* AddressOfEntryPoint */33.long .Lefi_header_end - _head /* BaseOfCode */3435.Lextra_header_fields:36.quad 0 /* ImageBase */37.long PECOFF_SEGMENT_ALIGN /* SectionAlignment */38.long PECOFF_FILE_ALIGN /* FileAlignment */39.short 0 /* MajorOperatingSystemVersion */40.short 0 /* MinorOperatingSystemVersion */41.short LINUX_EFISTUB_MAJOR_VERSION /* MajorImageVersion */42.short LINUX_EFISTUB_MINOR_VERSION /* MinorImageVersion */43.short 0 /* MajorSubsystemVersion */44.short 0 /* MinorSubsystemVersion */45.long 0 /* Win32VersionValue */4647.long _end - _head /* SizeOfImage */4849/* Everything before the kernel image is considered part of the header */50.long .Lefi_header_end - _head /* SizeOfHeaders */51.long 0 /* CheckSum */52.short IMAGE_SUBSYSTEM_EFI_APPLICATION /* Subsystem */53.short 0 /* DllCharacteristics */54.quad 0 /* SizeOfStackReserve */55.quad 0 /* SizeOfStackCommit */56.quad 0 /* SizeOfHeapReserve */57.quad 0 /* SizeOfHeapCommit */58.long 0 /* LoaderFlags */59.long (.Lsection_table - .) / 8 /* NumberOfRvaAndSizes */6061.quad 0 /* ExportTable */62.quad 0 /* ImportTable */63.quad 0 /* ResourceTable */64.quad 0 /* ExceptionTable */65.quad 0 /* CertificationTable */66.quad 0 /* BaseRelocationTable */6768/* Section table */69.Lsection_table:70.ascii ".text\0\0\0"71.long __inittext_end - .Lefi_header_end /* VirtualSize */72.long .Lefi_header_end - _head /* VirtualAddress */73.long __inittext_end - .Lefi_header_end /* SizeOfRawData */74.long .Lefi_header_end - _head /* PointerToRawData */7576.long 0 /* PointerToRelocations */77.long 0 /* PointerToLineNumbers */78.short 0 /* NumberOfRelocations */79.short 0 /* NumberOfLineNumbers */80.long IMAGE_SCN_CNT_CODE | \81IMAGE_SCN_MEM_READ | \82IMAGE_SCN_MEM_EXECUTE /* Characteristics */8384.ascii ".data\0\0\0"85.long _kernel_vsize /* VirtualSize */86.long __initdata_begin - _head /* VirtualAddress */87.long _kernel_rsize /* SizeOfRawData */88.long __initdata_begin - _head /* PointerToRawData */8990.long 0 /* PointerToRelocations */91.long 0 /* PointerToLineNumbers */92.short 0 /* NumberOfRelocations */93.short 0 /* NumberOfLineNumbers */94.long IMAGE_SCN_CNT_INITIALIZED_DATA | \95IMAGE_SCN_MEM_READ | \96IMAGE_SCN_MEM_WRITE /* Characteristics */9798.set .Lsection_count, (. - .Lsection_table) / 4099100.balign 0x10000 /* PECOFF_SEGMENT_ALIGN */101.Lefi_header_end:102.endm103104105