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/* DLL characteristics */
55#define IMAGE_DLLCHARACTERISTICS_NX_COMPAT	0x100
56
57/* Section flags */
58#define IMAGE_SCN_CNT_CODE			0x00000020
59#define IMAGE_SCN_CNT_INITIALIZED_DATA		0x00000040
60#define IMAGE_SCN_CNT_UNINITIALIZED_ DATA	0x00000080
61#define IMAGE_SCN_LNK_NRELOC_OVFL		0x01000000
62#define IMAGE_SCN_MEM_DISCARDABLE		0x02000000
63#define IMAGE_SCN_MEM_NOT_CACHED		0x04000000
64#define IMAGE_SCN_MEM_NOT_PAGED			0x08000000
65#define IMAGE_SCN_MEM_SHARED			0x10000000
66#define IMAGE_SCN_MEM_EXECUTE			0x20000000
67#define IMAGE_SCN_MEM_READ			0x40000000
68#define IMAGE_SCN_MEM_WRITE			0x80000000
69
70#define LINUX_ARM64_MAGIC			0x644d5241
71
72#endif /* _ASM_PE_H */
73