/* 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.short IMAGE_FILE_MACHINE_LOONGARCH64 /* Machine */12.short .Lsection_count /* NumberOfSections */13.long 0 /* TimeDateStamp */14.long 0 /* PointerToSymbolTable */15.long 0 /* NumberOfSymbols */16.short .Lsection_table - .Loptional_header /* SizeOfOptionalHeader */17.short IMAGE_FILE_DEBUG_STRIPPED | \18IMAGE_FILE_EXECUTABLE_IMAGE | \19IMAGE_FILE_LINE_NUMS_STRIPPED /* Characteristics */2021.Loptional_header:22.short IMAGE_NT_OPTIONAL_HDR64_MAGIC /* PE32+ format */23.byte 0x02 /* MajorLinkerVersion */24.byte 0x14 /* MinorLinkerVersion */25.long __inittext_end - .Lefi_header_end /* SizeOfCode */26.long _kernel_vsize /* SizeOfInitializedData */27.long 0 /* SizeOfUninitializedData */28.long __efistub_efi_pe_entry - _head /* AddressOfEntryPoint */29.long .Lefi_header_end - _head /* BaseOfCode */3031.Lextra_header_fields:32.quad 0 /* ImageBase */33.long PECOFF_SEGMENT_ALIGN /* SectionAlignment */34.long PECOFF_FILE_ALIGN /* FileAlignment */35.short 0 /* MajorOperatingSystemVersion */36.short 0 /* MinorOperatingSystemVersion */37.short LINUX_EFISTUB_MAJOR_VERSION /* MajorImageVersion */38.short LINUX_EFISTUB_MINOR_VERSION /* MinorImageVersion */39.short 0 /* MajorSubsystemVersion */40.short 0 /* MinorSubsystemVersion */41.long 0 /* Win32VersionValue */4243.long _end - _head /* SizeOfImage */4445/* Everything before the kernel image is considered part of the header */46.long .Lefi_header_end - _head /* SizeOfHeaders */47.long 0 /* CheckSum */48.short IMAGE_SUBSYSTEM_EFI_APPLICATION /* Subsystem */49.short 0 /* DllCharacteristics */50.quad 0 /* SizeOfStackReserve */51.quad 0 /* SizeOfStackCommit */52.quad 0 /* SizeOfHeapReserve */53.quad 0 /* SizeOfHeapCommit */54.long 0 /* LoaderFlags */55.long (.Lsection_table - .) / 8 /* NumberOfRvaAndSizes */5657.quad 0 /* ExportTable */58.quad 0 /* ImportTable */59.quad 0 /* ResourceTable */60.quad 0 /* ExceptionTable */61.quad 0 /* CertificationTable */62.quad 0 /* BaseRelocationTable */6364/* Section table */65.Lsection_table:66.ascii ".text\0\0\0"67.long __inittext_end - .Lefi_header_end /* VirtualSize */68.long .Lefi_header_end - _head /* VirtualAddress */69.long __inittext_end - .Lefi_header_end /* SizeOfRawData */70.long .Lefi_header_end - _head /* PointerToRawData */7172.long 0 /* PointerToRelocations */73.long 0 /* PointerToLineNumbers */74.short 0 /* NumberOfRelocations */75.short 0 /* NumberOfLineNumbers */76.long IMAGE_SCN_CNT_CODE | \77IMAGE_SCN_MEM_READ | \78IMAGE_SCN_MEM_EXECUTE /* Characteristics */7980.ascii ".data\0\0\0"81.long _kernel_vsize /* VirtualSize */82.long __initdata_begin - _head /* VirtualAddress */83.long _kernel_rsize /* SizeOfRawData */84.long __initdata_begin - _head /* PointerToRawData */8586.long 0 /* PointerToRelocations */87.long 0 /* PointerToLineNumbers */88.short 0 /* NumberOfRelocations */89.short 0 /* NumberOfLineNumbers */90.long IMAGE_SCN_CNT_INITIALIZED_DATA | \91IMAGE_SCN_MEM_READ | \92IMAGE_SCN_MEM_WRITE /* Characteristics */9394.set .Lsection_count, (. - .Lsection_table) / 409596.balign 0x10000 /* PECOFF_SEGMENT_ALIGN */97.Lefi_header_end:98.endm99100101