87 lines
2.8 KiB
C
87 lines
2.8 KiB
C
/*
|
|
* Copyright (c) 2015 ETH Zurich.
|
|
* All rights reserved.
|
|
*
|
|
* This file is distributed under the terms in the attached LICENSE file.
|
|
* If you do not find this file, copies can be found by writing to:
|
|
* ETH Zurich D-INFK, Universitaetstr 6, CH-8092 Zurich. Attn: Systems Group.
|
|
*/
|
|
|
|
#ifndef UEFI_MMAP_H
|
|
#define UEFI_MMAP_H
|
|
|
|
//*******************************************************
|
|
//EFI_VIRTUAL_ADDRESS
|
|
// UEFI Spec v2.5, p.158
|
|
//*******************************************************
|
|
typedef uint64_t EFI_VIRTUAL_ADDRESS;
|
|
|
|
//*******************************************************
|
|
//EFI_PHYSICAL_ADDRESS
|
|
// UEFI Spec v2.5, p.153
|
|
//*******************************************************
|
|
typedef uint64_t EFI_PHYSICAL_ADDRESS;
|
|
|
|
|
|
//*******************************************************
|
|
//EFI_MEMORY_TYPE
|
|
// UEFI Spec v2.5, p.153
|
|
//*******************************************************
|
|
// These type values are discussed in Table 25 and Table 26
|
|
typedef enum {
|
|
EfiReservedMemoryType,
|
|
EfiLoaderCode,
|
|
EfiLoaderData,
|
|
EfiBootServicesCode,
|
|
EfiBootServicesData,
|
|
EfiRuntimeServicesCode,
|
|
EfiRuntimeServicesData,
|
|
EfiConventionalMemory,
|
|
EfiUnusableMemory,
|
|
EfiACPIReclaimMemory,
|
|
EfiACPIMemoryNVS,
|
|
EfiMemoryMappedIO,
|
|
EfiMemoryMappedIOPortSpace,
|
|
EfiPalCode,
|
|
EfiPersistentMemory,
|
|
EfiMaxMemoryType
|
|
} EFI_MEMORY_TYPE;
|
|
|
|
//*******************************************************
|
|
// Memory Attribute Definitions
|
|
// from UEFI Spec v2.5, p.157
|
|
//*******************************************************
|
|
// These types can be “ORed” together as needed.
|
|
typedef enum {
|
|
EFI_MEMORY_UC = 0x0000000000000001,
|
|
EFI_MEMORY_WC = 0x0000000000000002,
|
|
EFI_MEMORY_WT = 0x0000000000000004,
|
|
EFI_MEMORY_WB = 0x0000000000000008,
|
|
EFI_MEMORY_UCE = 0x0000000000000010,
|
|
EFI_MEMORY_WP = 0x0000000000001000,
|
|
EFI_MEMORY_RP = 0x0000000000002000,
|
|
EFI_MEMORY_XP = 0x0000000000004000,
|
|
EFI_MEMORY_NV = 0x0000000000008000,
|
|
EFI_MEMORY_MORE_RELIABLE = 0x0000000000010000,
|
|
EFI_MEMORY_RO = 0x0000000000020000,
|
|
EFI_MEMORY_RUNTIME = 0x8000000000000000,
|
|
} EFI_MEMORY_ATTR;
|
|
|
|
//*******************************************************
|
|
// Memory Descriptor Version Number
|
|
//*******************************************************
|
|
#define EFI_MEMORY_DESCRIPTOR_VERSION 1
|
|
|
|
//*******************************************************
|
|
//EFI_MEMORY_DESCRIPTOR
|
|
//*******************************************************
|
|
typedef struct {
|
|
uint32_t Type;
|
|
EFI_PHYSICAL_ADDRESS PhysicalStart;
|
|
EFI_VIRTUAL_ADDRESS VirtualStart;
|
|
uint64_t NumberOfPages;
|
|
uint64_t Attribute;
|
|
} EFI_MEMORY_DESCRIPTOR;
|
|
|
|
#endif // UEFI_MMAP_H
|