1 /*
2  * Copyright (C) 2020-2022 Intel Corporation.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef EFI_H
8 #define EFI_H
9 
10 /* EFI Memory Attribute values: */
11 #define EFI_MEMORY_UC			0x0000000000000001UL	/* uncached */
12 #define EFI_MEMORY_WC			0x0000000000000002UL	/* write-coalescing */
13 #define EFI_MEMORY_WT			0x0000000000000004UL	/* write-through */
14 #define EFI_MEMORY_WB			0x0000000000000008UL	/* write-back */
15 /*
16 #define EFI_MEMORY_UCE			0x0000000000000010UL
17 #define EFI_MEMORY_WP			0x0000000000001000UL
18 #define EFI_MEMORY_RP			0x0000000000002000UL
19 #define EFI_MEMORY_XP			0x0000000000004000UL
20 #define EFI_MEMORY_NV			0x0000000000008000UL
21 #define EFI_MEMORY_MORE_RELIABLE 	0x0000000000010000UL
22 #define EFI_MEMORY_RO			0x0000000000020000UL
23 #define EFI_MEMORY_SP			0x0000000000040000UL
24 #define EFI_MEMORY_CPU_CRYPTO		0x0000000000080000UL
25 #define EFI_MEMORY_RUNTIME		0x8000000000000000UL
26 */
27 
28 enum efi_memory_type {
29 	EFI_RESERVED_MEMORYTYPE,
30 	EFI_LOADER_CODE,
31 	EFI_LOADER_DATA,
32 	EFI_BOOT_SERVICES_CODE,
33 	EFI_BOOT_SERVICES_DATA,
34 	EFI_RUNTIME_SERVICES_CODE,
35 	EFI_RUNTIME_SERVICES_DATA,
36 	EFI_CONVENTIONAL_MEMORY,
37 	EFI_UNUSABLE_MEMORY,
38 	EFI_ACPI_RECLAIM_MEMORY,
39 	EFI_ACPI_MEMORY_NVS,
40 	EFI_MEMORYMAPPED_IO,
41 	EFI_MEMORYMAPPED_IOPORTSPACE,
42 	EFI_PALCODE,
43 	EFI_PERSISTENT_MEMORY,
44 	EFI_MAX_MEMORYTYPE
45 };
46 
47 struct efi_memory_desc {
48 	uint32_t type;
49 	uint32_t pad;
50 	uint64_t phys_addr;
51 	uint64_t virt_addr;
52 	uint64_t num_pages;
53 	uint64_t attribute;
54 };
55 
56 struct efi_info {
57 	uint32_t loader_signature;	/* 0x1c0 */
58 	uint32_t systab;		/* 0x1c4 */
59 	uint32_t memdesc_size;		/* 0x1c8 */
60 	uint32_t memdesc_version;	/* 0x1cc */
61 	uint32_t memmap;		/* 0x1d0 */
62 	uint32_t memmap_size;		/* 0x1d4 */
63 	uint32_t systab_hi;		/* 0x1d8 */
64 	uint32_t memmap_hi;		/* 0x1dc */
65 } __packed;
66 
67 #endif
68