[BOOT] More header stuff

This commit is contained in:
Quinn Stephens 2024-08-26 19:54:21 -04:00
parent b63d80d5c9
commit 72f7e5057c
4 changed files with 64 additions and 3 deletions

View File

@ -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;

View File

@ -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;

View File

@ -30,4 +30,9 @@ EfiGetEfiStatusCode (
IN NTSTATUS Status
);
NTSTATUS
EfiGetNtStatusCode (
IN EFI_STATUS Status
);
#endif

View File

@ -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,