123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
- */
- #include <linux/pe.h>
- #include <linux/sizes.h>
- .macro __EFI_PE_HEADER
- .long PE_MAGIC
- .Lcoff_header:
- .short IMAGE_FILE_MACHINE_LOONGARCH64 /* Machine */
- .short .Lsection_count /* NumberOfSections */
- .long 0 /* TimeDateStamp */
- .long 0 /* PointerToSymbolTable */
- .long 0 /* NumberOfSymbols */
- .short .Lsection_table - .Loptional_header /* SizeOfOptionalHeader */
- .short IMAGE_FILE_DEBUG_STRIPPED | \
- IMAGE_FILE_EXECUTABLE_IMAGE | \
- IMAGE_FILE_LINE_NUMS_STRIPPED /* Characteristics */
- .Loptional_header:
- .short PE_OPT_MAGIC_PE32PLUS /* PE32+ format */
- .byte 0x02 /* MajorLinkerVersion */
- .byte 0x14 /* MinorLinkerVersion */
- .long __inittext_end - .Lefi_header_end /* SizeOfCode */
- .long _end - __initdata_begin /* SizeOfInitializedData */
- .long 0 /* SizeOfUninitializedData */
- .long __efistub_efi_pe_entry - _head /* AddressOfEntryPoint */
- .long .Lefi_header_end - _head /* BaseOfCode */
- .Lextra_header_fields:
- .quad 0 /* ImageBase */
- .long PECOFF_SEGMENT_ALIGN /* SectionAlignment */
- .long PECOFF_FILE_ALIGN /* FileAlignment */
- .short 0 /* MajorOperatingSystemVersion */
- .short 0 /* MinorOperatingSystemVersion */
- .short LINUX_EFISTUB_MAJOR_VERSION /* MajorImageVersion */
- .short LINUX_EFISTUB_MINOR_VERSION /* MinorImageVersion */
- .short 0 /* MajorSubsystemVersion */
- .short 0 /* MinorSubsystemVersion */
- .long 0 /* Win32VersionValue */
- .long _end - _head /* SizeOfImage */
- /* Everything before the kernel image is considered part of the header */
- .long .Lefi_header_end - _head /* SizeOfHeaders */
- .long 0 /* CheckSum */
- .short IMAGE_SUBSYSTEM_EFI_APPLICATION /* Subsystem */
- .short 0 /* DllCharacteristics */
- .quad 0 /* SizeOfStackReserve */
- .quad 0 /* SizeOfStackCommit */
- .quad 0 /* SizeOfHeapReserve */
- .quad 0 /* SizeOfHeapCommit */
- .long 0 /* LoaderFlags */
- .long (.Lsection_table - .) / 8 /* NumberOfRvaAndSizes */
- .quad 0 /* ExportTable */
- .quad 0 /* ImportTable */
- .quad 0 /* ResourceTable */
- .quad 0 /* ExceptionTable */
- .quad 0 /* CertificationTable */
- .quad 0 /* BaseRelocationTable */
- /* Section table */
- .Lsection_table:
- .ascii ".text\0\0\0"
- .long __inittext_end - .Lefi_header_end /* VirtualSize */
- .long .Lefi_header_end - _head /* VirtualAddress */
- .long __inittext_end - .Lefi_header_end /* SizeOfRawData */
- .long .Lefi_header_end - _head /* PointerToRawData */
- .long 0 /* PointerToRelocations */
- .long 0 /* PointerToLineNumbers */
- .short 0 /* NumberOfRelocations */
- .short 0 /* NumberOfLineNumbers */
- .long IMAGE_SCN_CNT_CODE | \
- IMAGE_SCN_MEM_READ | \
- IMAGE_SCN_MEM_EXECUTE /* Characteristics */
- .ascii ".data\0\0\0"
- .long _end - __initdata_begin /* VirtualSize */
- .long __initdata_begin - _head /* VirtualAddress */
- .long _edata - __initdata_begin /* SizeOfRawData */
- .long __initdata_begin - _head /* PointerToRawData */
- .long 0 /* PointerToRelocations */
- .long 0 /* PointerToLineNumbers */
- .short 0 /* NumberOfRelocations */
- .short 0 /* NumberOfLineNumbers */
- .long IMAGE_SCN_CNT_INITIALIZED_DATA | \
- IMAGE_SCN_MEM_READ | \
- IMAGE_SCN_MEM_WRITE /* Characteristics */
- .set .Lsection_count, (. - .Lsection_table) / 40
- .balign 0x10000 /* PECOFF_SEGMENT_ALIGN */
- .Lefi_header_end:
- .endm
|