| /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | 
 | #ifndef _UAPI_ASM_X86_E820_H | 
 | #define _UAPI_ASM_X86_E820_H | 
 | #define E820MAP	0x2d0		/* our map */ | 
 | #define E820MAX	128		/* number of entries in E820MAP */ | 
 |  | 
 | /* | 
 |  * Legacy E820 BIOS limits us to 128 (E820MAX) nodes due to the | 
 |  * constrained space in the zeropage.  If we have more nodes than | 
 |  * that, and if we've booted off EFI firmware, then the EFI tables | 
 |  * passed us from the EFI firmware can list more nodes.  Size our | 
 |  * internal memory map tables to have room for these additional | 
 |  * nodes, based on up to three entries per node for which the | 
 |  * kernel was built: MAX_NUMNODES == (1 << CONFIG_NODES_SHIFT), | 
 |  * plus E820MAX, allowing space for the possible duplicate E820 | 
 |  * entries that might need room in the same arrays, prior to the | 
 |  * call to sanitize_e820_map() to remove duplicates.  The allowance | 
 |  * of three memory map entries per node is "enough" entries for | 
 |  * the initial hardware platform motivating this mechanism to make | 
 |  * use of additional EFI map entries.  Future platforms may want | 
 |  * to allow more than three entries per node or otherwise refine | 
 |  * this size. | 
 |  */ | 
 |  | 
 | #ifndef __KERNEL__ | 
 | #define E820_X_MAX E820MAX | 
 | #endif | 
 |  | 
 | #define E820NR	0x1e8		/* # entries in E820MAP */ | 
 |  | 
 | #define E820_RAM	1 | 
 | #define E820_RESERVED	2 | 
 | #define E820_ACPI	3 | 
 | #define E820_NVS	4 | 
 | #define E820_UNUSABLE	5 | 
 | #define E820_PMEM	7 | 
 |  | 
 | /* | 
 |  * This is a non-standardized way to represent ADR or NVDIMM regions that | 
 |  * persist over a reboot.  The kernel will ignore their special capabilities | 
 |  * unless the CONFIG_X86_PMEM_LEGACY option is set. | 
 |  * | 
 |  * ( Note that older platforms also used 6 for the same type of memory, | 
 |  *   but newer versions switched to 12 as 6 was assigned differently.  Some | 
 |  *   time they will learn... ) | 
 |  */ | 
 | #define E820_PRAM	12 | 
 |  | 
 | /* | 
 |  * reserved RAM used by kernel itself | 
 |  * if CONFIG_INTEL_TXT is enabled, memory of this type will be | 
 |  * included in the S3 integrity calculation and so should not include | 
 |  * any memory that BIOS might alter over the S3 transition | 
 |  */ | 
 | #define E820_RESERVED_KERN        128 | 
 |  | 
 | #ifndef __ASSEMBLY__ | 
 | #include <linux/types.h> | 
 | struct e820entry { | 
 | 	__u64 addr;	/* start of memory segment */ | 
 | 	__u64 size;	/* size of memory segment */ | 
 | 	__u32 type;	/* type of memory segment */ | 
 | } __attribute__((packed)); | 
 |  | 
 | struct e820map { | 
 | 	__u32 nr_map; | 
 | 	struct e820entry map[E820_X_MAX]; | 
 | }; | 
 |  | 
 | #define ISA_START_ADDRESS	0xa0000 | 
 | #define ISA_END_ADDRESS		0x100000 | 
 |  | 
 | #define BIOS_BEGIN		0x000a0000 | 
 | #define BIOS_END		0x00100000 | 
 |  | 
 | #define BIOS_ROM_BASE		0xffe00000 | 
 | #define BIOS_ROM_END		0xffffffff | 
 |  | 
 | #endif /* __ASSEMBLY__ */ | 
 |  | 
 |  | 
 | #endif /* _UAPI_ASM_X86_E820_H */ |