1 /* SPDX-License-Identifier: GPL-2.0+ */
2 /*
3  *  Portable Executable and Common Object Constants
4  *
5  *  Copyright (c) 2018 Heinrich Schuchardt
6  *
7  *  based on the "Microsoft Portable Executable and Common Object File Format
8  *  Specification", revision 11, 2017-01-23
9  */
10 
11 #ifndef _ASM_PE_H
12 #define _ASM_PE_H
13 
14 /* Characteristics */
15 #define IMAGE_FILE_RELOCS_STRIPPED		0x0001
16 #define IMAGE_FILE_EXECUTABLE_IMAGE		0x0002
17 #define IMAGE_FILE_LINE_NUMS_STRIPPED		0x0004
18 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED		0x0008
19 #define IMAGE_FILE_AGGRESSIVE_WS_TRIM		0x0010
20 #define IMAGE_FILE_LARGE_ADDRESS_AWARE		0x0020
21 /* Reserved					0x0040 */
22 #define IMAGE_FILE_BYTES_REVERSED_LO		0x0080
23 #define IMAGE_FILE_32BIT_MACHINE		0x0100
24 #define IMAGE_FILE_DEBUG_STRIPPED		0x0200
25 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP	0x0400
26 #define IMAGE_FILE_NET_RUN_FROM_SWAP		0x0800
27 #define IMAGE_FILE_SYSTEM			0x1000
28 #define IMAGE_FILE_DLL				0x2000
29 #define IMAGE_FILE_UP_SYSTEM_ONLY		0x4000
30 #define IMAGE_FILE_BYTES_REVERSED_HI		0x8000
31 
32 /* Machine types */
33 #define IMAGE_FILE_MACHINE_I386			0x014c
34 #define IMAGE_FILE_MACHINE_ARM			0x01c0
35 #define IMAGE_FILE_MACHINE_THUMB		0x01c2
36 #define IMAGE_FILE_MACHINE_ARMNT		0x01c4
37 #define IMAGE_FILE_MACHINE_AMD64		0x8664
38 #define IMAGE_FILE_MACHINE_ARM64		0xaa64
39 #define IMAGE_FILE_MACHINE_RISCV32		0x5032
40 #define IMAGE_FILE_MACHINE_RISCV64		0x5064
41 
42 /* Header magic constants */
43 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC		0x010b
44 #define IMAGE_NT_OPTIONAL_HDR64_MAGIC		0x020b
45 #define IMAGE_DOS_SIGNATURE			0x5a4d     /* MZ   */
46 #define IMAGE_NT_SIGNATURE			0x00004550 /* PE00 */
47 
48 /* Subsystem type */
49 #define IMAGE_SUBSYSTEM_EFI_APPLICATION		10
50 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER	11
51 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER	12
52 #define IMAGE_SUBSYSTEM_EFI_ROM			13
53 
54 #define LINUX_ARM64_MAGIC			0x644d5241
55 
56 #endif /* _ASM_PE_H */
57