File Index
Files and directories
Sign in
FILE

efi-header.S

File preview with syntax highlighting.

linux-6.19.14/arch/loongarch/kernel/efi-header.S GAS
  1/* SPDX-License-Identifier: GPL-2.0 */
  2/*
  3 * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
  4 */
  5
  6#include <linux/pe.h>
  7#include <linux/sizes.h>
  8
  9	.macro	__EFI_PE_HEADER
 10	.long	IMAGE_NT_SIGNATURE
 11.Lcoff_header:
 12#ifdef CONFIG_32BIT
 13	.short	IMAGE_FILE_MACHINE_LOONGARCH32		/* Machine */
 14#else
 15	.short	IMAGE_FILE_MACHINE_LOONGARCH64		/* Machine */
 16#endif
 17	.short	.Lsection_count				/* NumberOfSections */
 18	.long	0 					/* TimeDateStamp */
 19	.long	0					/* PointerToSymbolTable */
 20	.long	0					/* NumberOfSymbols */
 21	.short	.Lsection_table - .Loptional_header	/* SizeOfOptionalHeader */
 22	.short	IMAGE_FILE_DEBUG_STRIPPED | \
 23		IMAGE_FILE_EXECUTABLE_IMAGE | \
 24		IMAGE_FILE_LINE_NUMS_STRIPPED		/* Characteristics */
 25
 26.Loptional_header:
 27	.short	IMAGE_NT_OPTIONAL_HDR64_MAGIC		/* PE32+ format */
 28	.byte	0x02					/* MajorLinkerVersion */
 29	.byte	0x14					/* MinorLinkerVersion */
 30	.long	__inittext_end - .Lefi_header_end	/* SizeOfCode */
 31	.long	_kernel_vsize				/* SizeOfInitializedData */
 32	.long	0					/* SizeOfUninitializedData */
 33	.long	__efistub_efi_pe_entry - _head		/* AddressOfEntryPoint */
 34	.long	.Lefi_header_end - _head		/* BaseOfCode */
 35
 36.Lextra_header_fields:
 37	.quad	0					/* ImageBase */
 38	.long	PECOFF_SEGMENT_ALIGN			/* SectionAlignment */
 39	.long	PECOFF_FILE_ALIGN			/* FileAlignment */
 40	.short	0					/* MajorOperatingSystemVersion */
 41	.short	0					/* MinorOperatingSystemVersion */
 42	.short	LINUX_EFISTUB_MAJOR_VERSION		/* MajorImageVersion */
 43	.short	LINUX_EFISTUB_MINOR_VERSION		/* MinorImageVersion */
 44	.short	0					/* MajorSubsystemVersion */
 45	.short	0					/* MinorSubsystemVersion */
 46	.long	0					/* Win32VersionValue */
 47
 48	.long	_end - _head				/* SizeOfImage */
 49
 50	/* Everything before the kernel image is considered part of the header */
 51	.long	.Lefi_header_end - _head		/* SizeOfHeaders */
 52	.long	0					/* CheckSum */
 53	.short	IMAGE_SUBSYSTEM_EFI_APPLICATION		/* Subsystem */
 54	.short	0					/* DllCharacteristics */
 55	.quad	0					/* SizeOfStackReserve */
 56	.quad	0					/* SizeOfStackCommit */
 57	.quad	0					/* SizeOfHeapReserve */
 58	.quad	0					/* SizeOfHeapCommit */
 59	.long	0					/* LoaderFlags */
 60	.long	(.Lsection_table - .) / 8		/* NumberOfRvaAndSizes */
 61
 62	.quad	0					/* ExportTable */
 63	.quad	0					/* ImportTable */
 64	.quad	0					/* ResourceTable */
 65	.quad	0					/* ExceptionTable */
 66	.quad	0					/* CertificationTable */
 67	.quad	0					/* BaseRelocationTable */
 68
 69	/* Section table */
 70.Lsection_table:
 71	.ascii	".text\0\0\0"
 72	.long	__inittext_end - .Lefi_header_end	/* VirtualSize */
 73	.long	.Lefi_header_end - _head		/* VirtualAddress */
 74	.long	__inittext_end - .Lefi_header_end	/* SizeOfRawData */
 75	.long	.Lefi_header_end - _head		/* PointerToRawData */
 76
 77	.long	0					/* PointerToRelocations */
 78	.long	0					/* PointerToLineNumbers */
 79	.short	0					/* NumberOfRelocations */
 80	.short	0					/* NumberOfLineNumbers */
 81	.long	IMAGE_SCN_CNT_CODE | \
 82		IMAGE_SCN_MEM_READ | \
 83		IMAGE_SCN_MEM_EXECUTE			/* Characteristics */
 84
 85	.ascii	".data\0\0\0"
 86	.long	_kernel_vsize				/* VirtualSize */
 87	.long	__initdata_begin - _head		/* VirtualAddress */
 88	.long	_kernel_rsize				/* SizeOfRawData */
 89	.long	__initdata_begin - _head		/* PointerToRawData */
 90
 91	.long	0					/* PointerToRelocations */
 92	.long	0					/* PointerToLineNumbers */
 93	.short	0					/* NumberOfRelocations */
 94	.short	0					/* NumberOfLineNumbers */
 95	.long	IMAGE_SCN_CNT_INITIALIZED_DATA | \
 96		IMAGE_SCN_MEM_READ | \
 97		IMAGE_SCN_MEM_WRITE			/* Characteristics */
 98
 99	.set	.Lsection_count, (. - .Lsection_table) / 40
100
101	.balign	0x10000					/* PECOFF_SEGMENT_ALIGN */
102.Lefi_header_end:
103	.endm
~/ Read-only file preview.