Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/loongarch/kernel/efi-header.S
49634 views
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
104
105