arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / arch / loongarch / kernel / efi-header.S
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   PE_MAGIC
11 .Lcoff_header:
12         .short  IMAGE_FILE_MACHINE_LOONGARCH64          /* Machine */
13         .short  .Lsection_count                         /* NumberOfSections */
14         .long   0                                       /* TimeDateStamp */
15         .long   0                                       /* PointerToSymbolTable */
16         .long   0                                       /* NumberOfSymbols */
17         .short  .Lsection_table - .Loptional_header     /* SizeOfOptionalHeader */
18         .short  IMAGE_FILE_DEBUG_STRIPPED | \
19                 IMAGE_FILE_EXECUTABLE_IMAGE | \
20                 IMAGE_FILE_LINE_NUMS_STRIPPED           /* Characteristics */
21
22 .Loptional_header:
23         .short  PE_OPT_MAGIC_PE32PLUS                   /* PE32+ format */
24         .byte   0x02                                    /* MajorLinkerVersion */
25         .byte   0x14                                    /* MinorLinkerVersion */
26         .long   __inittext_end - .Lefi_header_end       /* SizeOfCode */
27         .long   _kernel_vsize                           /* SizeOfInitializedData */
28         .long   0                                       /* SizeOfUninitializedData */
29         .long   __efistub_efi_pe_entry - _head          /* AddressOfEntryPoint */
30         .long   .Lefi_header_end - _head                /* BaseOfCode */
31
32 .Lextra_header_fields:
33         .quad   0                                       /* ImageBase */
34         .long   PECOFF_SEGMENT_ALIGN                    /* SectionAlignment */
35         .long   PECOFF_FILE_ALIGN                       /* FileAlignment */
36         .short  0                                       /* MajorOperatingSystemVersion */
37         .short  0                                       /* MinorOperatingSystemVersion */
38         .short  LINUX_EFISTUB_MAJOR_VERSION             /* MajorImageVersion */
39         .short  LINUX_EFISTUB_MINOR_VERSION             /* MinorImageVersion */
40         .short  0                                       /* MajorSubsystemVersion */
41         .short  0                                       /* MinorSubsystemVersion */
42         .long   0                                       /* Win32VersionValue */
43
44         .long   _end - _head                            /* SizeOfImage */
45
46         /* Everything before the kernel image is considered part of the header */
47         .long   .Lefi_header_end - _head                /* SizeOfHeaders */
48         .long   0                                       /* CheckSum */
49         .short  IMAGE_SUBSYSTEM_EFI_APPLICATION         /* Subsystem */
50         .short  0                                       /* DllCharacteristics */
51         .quad   0                                       /* SizeOfStackReserve */
52         .quad   0                                       /* SizeOfStackCommit */
53         .quad   0                                       /* SizeOfHeapReserve */
54         .quad   0                                       /* SizeOfHeapCommit */
55         .long   0                                       /* LoaderFlags */
56         .long   (.Lsection_table - .) / 8               /* NumberOfRvaAndSizes */
57
58         .quad   0                                       /* ExportTable */
59         .quad   0                                       /* ImportTable */
60         .quad   0                                       /* ResourceTable */
61         .quad   0                                       /* ExceptionTable */
62         .quad   0                                       /* CertificationTable */
63         .quad   0                                       /* BaseRelocationTable */
64
65         /* Section table */
66 .Lsection_table:
67         .ascii  ".text\0\0\0"
68         .long   __inittext_end - .Lefi_header_end       /* VirtualSize */
69         .long   .Lefi_header_end - _head                /* VirtualAddress */
70         .long   __inittext_end - .Lefi_header_end       /* SizeOfRawData */
71         .long   .Lefi_header_end - _head                /* PointerToRawData */
72
73         .long   0                                       /* PointerToRelocations */
74         .long   0                                       /* PointerToLineNumbers */
75         .short  0                                       /* NumberOfRelocations */
76         .short  0                                       /* NumberOfLineNumbers */
77         .long   IMAGE_SCN_CNT_CODE | \
78                 IMAGE_SCN_MEM_READ | \
79                 IMAGE_SCN_MEM_EXECUTE                   /* Characteristics */
80
81         .ascii  ".data\0\0\0"
82         .long   _kernel_vsize                           /* VirtualSize */
83         .long   __initdata_begin - _head                /* VirtualAddress */
84         .long   _kernel_rsize                           /* SizeOfRawData */
85         .long   __initdata_begin - _head                /* PointerToRawData */
86
87         .long   0                                       /* PointerToRelocations */
88         .long   0                                       /* PointerToLineNumbers */
89         .short  0                                       /* NumberOfRelocations */
90         .short  0                                       /* NumberOfLineNumbers */
91         .long   IMAGE_SCN_CNT_INITIALIZED_DATA | \
92                 IMAGE_SCN_MEM_READ | \
93                 IMAGE_SCN_MEM_WRITE                     /* Characteristics */
94
95         .set    .Lsection_count, (. - .Lsection_table) / 40
96
97         .balign 0x10000                                 /* PECOFF_SEGMENT_ALIGN */
98 .Lefi_header_end:
99         .endm