From 020b7c7676d96390a6a71cc42c8cd60e186a54e3 Mon Sep 17 00:00:00 2001 From: Aiken Harris Date: Tue, 16 Dec 2025 18:37:28 +0100 Subject: [PATCH] Extend memory layout --- sdk/xtdk/mmtypes.h | 5 +++++ xtoskrnl/mm/mmgr.cc | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/sdk/xtdk/mmtypes.h b/sdk/xtdk/mmtypes.h index efb218c..193ca8f 100644 --- a/sdk/xtdk/mmtypes.h +++ b/sdk/xtdk/mmtypes.h @@ -57,10 +57,15 @@ typedef struct _MMMEMORY_LAYOUT { PMMPFN PfnDatabaseAddress; PVOID SelfMapAddress; + PVOID HyperSpaceStart; + PVOID HyperSpaceEnd; PVOID NonPagedPoolStart; PVOID NonPagedPoolEnd; PVOID PagedPoolStart; PVOID PagedPoolEnd; + PVOID SystemSpaceStart; + PVOID SystemSpaceEnd; + PVOID UserSpaceEnd; } MMMEMORY_LAYOUT, *PMMMEMORY_LAYOUT; /* Page Frame Entry structure definition */ diff --git a/xtoskrnl/mm/mmgr.cc b/xtoskrnl/mm/mmgr.cc index 79af5a4..93ff272 100644 --- a/xtoskrnl/mm/mmgr.cc +++ b/xtoskrnl/mm/mmgr.cc @@ -57,6 +57,12 @@ MM::Manager::InitializeMemoryLayout(VOID) MemoryLayout.NonPagedPoolEnd = (PVOID)0xFFFEFFFFFFBFFFFFULL; MemoryLayout.PagedPoolStart = (PVOID)0xFFFEF8A000000000ULL; MemoryLayout.PagedPoolEnd = (PVOID)(((ULONG_PTR)MemoryLayout.PagedPoolStart + PagedPoolSize) - 1); + + MemoryLayout.HyperSpaceStart = (PVOID)0xFFFEF70000000000ULL; + MemoryLayout.HyperSpaceEnd = (PVOID)0xFFFEF77FFFFFFFFFULL; + MemoryLayout.SystemSpaceStart = (PVOID)0xFFFEF88000000000ULL; + MemoryLayout.SystemSpaceEnd = (PVOID)((ULONG_PTR)MemoryLayout.SystemSpaceStart + (MM_NUMBER_SYSTEM_PTES + 1) * MM_PAGE_SIZE); + MemoryLayout.UserSpaceEnd = (PVOID)0x07FFFFFFFFFFFFFULL; } else { @@ -67,6 +73,12 @@ MM::Manager::InitializeMemoryLayout(VOID) MemoryLayout.NonPagedPoolEnd = (PVOID)0xFFFFFFFFFFBFFFFFULL; MemoryLayout.PagedPoolStart = (PVOID)0xFFFFF8A000000000ULL; MemoryLayout.PagedPoolEnd = (PVOID)(((ULONG_PTR)MemoryLayout.PagedPoolStart + PagedPoolSize) - 1); + + MemoryLayout.HyperSpaceStart = (PVOID)0xFFFFF70000000000ULL; + MemoryLayout.HyperSpaceEnd = (PVOID)0xFFFFF77FFFFFFFFFULL; + MemoryLayout.SystemSpaceStart = (PVOID)0xFFFFF88000000000ULL; + MemoryLayout.SystemSpaceEnd = (PVOID)((ULONG_PTR)MemoryLayout.SystemSpaceStart + (MM_NUMBER_SYSTEM_PTES + 1) * MM_PAGE_SIZE); + MemoryLayout.UserSpaceEnd = (PVOID)0x000007FFFFFEFFFFULL; } }