From 72f7e5057c4ae7947cb8d16a98ac40ea224db31d Mon Sep 17 00:00:00 2001 From: Kaimakan71 Date: Mon, 26 Aug 2024 19:54:21 -0400 Subject: [PATCH] [BOOT] More header stuff --- BOOT/ENVIRON/INC/bootmgr.h | 34 ++++++++++++++++++++++++++++++++-- BOOT/ENVIRON/INC/efiapi.h | 12 +++++++++++- BOOT/ENVIRON/INC/efilib.h | 5 +++++ BOOT/ENVIRON/INC/mm.h | 16 ++++++++++++++++ 4 files changed, 64 insertions(+), 3 deletions(-) diff --git a/BOOT/ENVIRON/INC/bootmgr.h b/BOOT/ENVIRON/INC/bootmgr.h index 43acb26..c95b1e0 100644 --- a/BOOT/ENVIRON/INC/bootmgr.h +++ b/BOOT/ENVIRON/INC/bootmgr.h @@ -109,9 +109,39 @@ typedef struct { ULONG BasePageOffset; } BOOT_MEMORY_INFO, *PBOOT_MEMORY_INFO; -#define MEMORY_ATTRIBUTE_CACHE_WB 0x08 +/* Memory descriptor caching attributes */ +#define MEMORY_ATTRIBUTE_UC 0x0000000000000001 +#define MEMORY_ATTRIBUTE_WC 0x0000000000000002 +#define MEMORY_ATTRIBUTE_WT 0x0000000000000004 +#define MEMORY_ATTRIBUTE_WB 0x0000000000000008 +#define MEMORY_ATTRIBUTE_UCE 0x0000000000000010 -#define MEMORY_TYPE_BOOT_APPLICATION 0xd0000002 +/* Memory descriptor protection attributes */ +#define MEMORY_ATTRIBUTE_WP 0x000000000000100 +#define MEMORY_ATTRIBUTE_RP 0x000000000000200 +#define MEMORY_ATTRIBUTE_XP 0x000000000000400 + +/* Memory descriptor location attributes */ +#define MEMORY_ATTRIBUTE_BELOW_1MIB 0x80000 + +/* Memory descriptor runtime mapping attributes */ +#define MEMORY_ATTRIBUTE_RUNTIME 0x1000000 + +typedef enum { + MEMORY_TYPE_BOOT_APPLICATION = 0xD0000002, + MEMORY_TYPE_FREE = 0xF0000001, + MEMORY_TYPE_UNUSABLE = 0xF0000002, + MEMORY_TYPE_RESERVED = 0xF0000003, + MEMORY_TYPE_BOOT_SERVICES = 0xF0000004, + MEMORY_TYPE_RUNTIME_SERVICES_CODE = 0xF0000006, + MEMORY_TYPE_PERSISTENT = 0xF0000007, + MEMORY_TYPE_ACPI_RECLAIM = 0xF0000008, + MEMORY_TYPE_ACPI_NVS = 0xF0000009, + MEMORY_TYPE_MMIO = 0xF000000A, + MEMORY_TYPE_MMIO_PORT_SPACE = 0xF000000B, + MEMORY_TYPE_PAL_CODE = 0xF000000C, + MEMORY_TYPE_RUNTIME_SERVICES_DATA = 0xF000000E +} MEMORY_TYPE; typedef struct { LIST_ENTRY ListEntry; diff --git a/BOOT/ENVIRON/INC/efiapi.h b/BOOT/ENVIRON/INC/efiapi.h index 88240e4..3e7972c 100644 --- a/BOOT/ENVIRON/INC/efiapi.h +++ b/BOOT/ENVIRON/INC/efiapi.h @@ -123,6 +123,16 @@ EFI_STATUS IN UINTN Pages ); +typedef +EFI_STATUS +(EFIAPI *EFI_GET_MEMORY_MAP) ( + IN OUT UINTN *MemoryMapSize, + IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap, + IN OUT UINTN *MapKey, + IN OUT UINTN *DescriptorSize, + IN OUT UINT32 *DescriptorVersion + ); + typedef EFI_STATUS (EFIAPI *EFI_HANDLE_PROTOCOL) ( @@ -139,7 +149,7 @@ typedef struct _EFI_BOOT_SERVICES { EFI_ALLOCATE_PAGES AllocatePages; EFI_FREE_PAGES FreePages; - EFI_HANDLE GetMemoryMap; + EFI_GET_MEMORY_MAP GetMemoryMap; EFI_HANDLE AllocatePool; EFI_HANDLE FreePool; diff --git a/BOOT/ENVIRON/INC/efilib.h b/BOOT/ENVIRON/INC/efilib.h index 90feb6c..294d95d 100644 --- a/BOOT/ENVIRON/INC/efilib.h +++ b/BOOT/ENVIRON/INC/efilib.h @@ -30,4 +30,9 @@ EfiGetEfiStatusCode ( IN NTSTATUS Status ); +NTSTATUS +EfiGetNtStatusCode ( + IN EFI_STATUS Status + ); + #endif diff --git a/BOOT/ENVIRON/INC/mm.h b/BOOT/ENVIRON/INC/mm.h index 654fa68..876c7ff 100644 --- a/BOOT/ENVIRON/INC/mm.h +++ b/BOOT/ENVIRON/INC/mm.h @@ -24,6 +24,13 @@ MmFwGetMemoryMap ( IN ULONG Flags ); +NTSTATUS +MmMdAddDescriptorToList ( + IN PMEMORY_DESCRIPTOR_LIST Mdl, + IN PMEMORY_DESCRIPTOR Descriptor, + IN ULONG Flags + ); + VOID MmMdRemoveDescriptorFromList ( IN PMEMORY_DESCRIPTOR_LIST Mdl, @@ -40,6 +47,15 @@ MmMdFreeList ( IN PMEMORY_DESCRIPTOR_LIST Mdl ); +PMEMORY_DESCRIPTOR +MmMdInitDescriptor ( + IN ULONGLONG BasePage, + IN ULONGLONG MappedBasePage, + IN ULONGLONG PageCount, + IN ULONG Attributes, + IN MEMORY_TYPE Type + ); + VOID MmMdInitialize ( IN ULONG Unused,