Unify PTE type definitions across architectures
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 23s
Builds / ExectOS (i686, debug) (push) Successful in 27s
Builds / ExectOS (i686, release) (push) Successful in 37s
Builds / ExectOS (amd64, release) (push) Successful in 40s

This commit is contained in:
2026-03-15 20:23:44 +01:00
parent d263f17831
commit 42525e5993
7 changed files with 40 additions and 41 deletions

View File

@@ -39,7 +39,7 @@ namespace MM
XTAPI PMMPPE GetPpeAddress(IN PVOID Address); XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
XTAPI ULONG GetPpeOffset(IN PVOID Address); XTAPI ULONG GetPpeOffset(IN PVOID Address);
VIRTUAL XTAPI PVOID GetPpeVirtualAddress(IN PMMPPE PpePointer) = 0; VIRTUAL XTAPI PVOID GetPpeVirtualAddress(IN PMMPPE PpePointer) = 0;
XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer); XTAPI ULONGLONG GetPte(IN PMMPTE PtePointer);
XTAPI PMMPTE GetPteAddress(IN PVOID Address); XTAPI PMMPTE GetPteAddress(IN PVOID Address);
XTAPI LONG GetPteDistance(PMMPTE EndPte, XTAPI LONG GetPteDistance(PMMPTE EndPte,
PMMPTE StartPte); PMMPTE StartPte);
@@ -61,9 +61,9 @@ namespace MM
IN BOOLEAN Value); IN BOOLEAN Value);
XTAPI VOID SetPte(IN PMMPTE PtePointer, XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask); IN ULONGLONG AttributesMask);
XTAPI VOID SetPte(IN PMMPTE PtePointer, XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes); IN ULONGLONG Attributes);
XTAPI VOID SetPteCaching(IN PMMPTE PtePointer, XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
IN BOOLEAN CacheDisable, IN BOOLEAN CacheDisable,
IN BOOLEAN WriteThrough); IN BOOLEAN WriteThrough);

View File

@@ -37,7 +37,7 @@ namespace MM
STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer); STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address); STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
STATIC XTAPI PVOID GetPpeVirtualAddress(IN PMMPPE PpePointer); STATIC XTAPI PVOID GetPpeVirtualAddress(IN PMMPPE PpePointer);
STATIC XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer); STATIC XTAPI ULONGLONG GetPte(IN PMMPTE PtePointer);
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address); STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);
STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte, STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte,
PMMPTE StartPte); PMMPTE StartPte);
@@ -57,9 +57,9 @@ namespace MM
IN BOOLEAN Value); IN BOOLEAN Value);
STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer, STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask); IN ULONGLONG AttributesMask);
STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer, STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes); IN ULONGLONG Attributes);
STATIC XTAPI VOID SetPteCaching(IN PMMPTE PtePointer, STATIC XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
IN BOOLEAN CacheDisable, IN BOOLEAN CacheDisable,
IN BOOLEAN WriteThrough); IN BOOLEAN WriteThrough);

View File

@@ -36,7 +36,7 @@ namespace MM
XTAPI PMMPPE GetPpeAddress(IN PVOID Address); XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
XTAPI ULONG GetPpeOffset(IN PVOID Address); XTAPI ULONG GetPpeOffset(IN PVOID Address);
XTAPI PVOID GetPpeVirtualAddress(IN PMMPPE PpePointer); XTAPI PVOID GetPpeVirtualAddress(IN PMMPPE PpePointer);
VIRTUAL XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer) = 0; VIRTUAL XTAPI ULONGLONG GetPte(IN PMMPTE PtePointer) = 0;
XTAPI PMMPTE GetPteAddress(IN PVOID Address); XTAPI PMMPTE GetPteAddress(IN PVOID Address);
XTAPI ULONG GetPteOffset(IN PVOID Address); XTAPI ULONG GetPteOffset(IN PVOID Address);
VIRTUAL XTAPI LONG GetPteDistance(PMMPTE EndPte, VIRTUAL XTAPI LONG GetPteDistance(PMMPTE EndPte,
@@ -55,9 +55,9 @@ namespace MM
IN BOOLEAN Value) = 0; IN BOOLEAN Value) = 0;
VIRTUAL XTAPI VOID SetPte(IN PMMPTE PtePointer, VIRTUAL XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask) = 0; IN ULONGLONG AttributesMask) = 0;
VIRTUAL XTAPI VOID SetPte(IN PMMPTE PtePointer, VIRTUAL XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes) = 0; IN ULONGLONG Attributes) = 0;
VIRTUAL XTAPI VOID SetPteCaching(IN PMMPTE PtePointer, VIRTUAL XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
IN BOOLEAN CacheDisable, IN BOOLEAN CacheDisable,
IN BOOLEAN WriteThrough) = 0; IN BOOLEAN WriteThrough) = 0;
@@ -79,7 +79,7 @@ namespace MM
XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte); XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte); XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer); XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer); XTAPI ULONGLONG GetPte(IN PMMPTE PtePointer);
XTAPI LONG GetPteDistance(PMMPTE EndPte, XTAPI LONG GetPteDistance(PMMPTE EndPte,
PMMPTE StartPte); PMMPTE StartPte);
XTAPI ULONG GetPteSize(VOID); XTAPI ULONG GetPteSize(VOID);
@@ -95,9 +95,9 @@ namespace MM
IN BOOLEAN Value); IN BOOLEAN Value);
XTAPI VOID SetPte(IN PMMPTE PtePointer, XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask); IN ULONGLONG AttributesMask);
XTAPI VOID SetPte(IN PMMPTE PtePointer, XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes); IN ULONGLONG Attributes);
XTAPI VOID SetPteCaching(IN PMMPTE PtePointer, XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
IN BOOLEAN CacheDisable, IN BOOLEAN CacheDisable,
IN BOOLEAN WriteThrough); IN BOOLEAN WriteThrough);
@@ -118,7 +118,7 @@ namespace MM
XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte); XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte); XTAPI PFN_NUMBER GetPageFrameNumber(IN PMMPTE Pte);
XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer); XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer); XTAPI ULONGLONG GetPte(IN PMMPTE PtePointer);
XTAPI LONG GetPteDistance(PMMPTE EndPte, XTAPI LONG GetPteDistance(PMMPTE EndPte,
PMMPTE StartPte); PMMPTE StartPte);
XTAPI ULONG GetPteSize(VOID); XTAPI ULONG GetPteSize(VOID);
@@ -134,9 +134,9 @@ namespace MM
IN BOOLEAN Value); IN BOOLEAN Value);
XTAPI VOID SetPte(IN PMMPTE PtePointer, XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask); IN ULONGLONG AttributesMask);
XTAPI VOID SetPte(IN PMMPTE PtePointer, XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes); IN ULONGLONG Attributes);
XTAPI VOID SetPteCaching(IN PMMPTE PtePointer, XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
IN BOOLEAN CacheDisable, IN BOOLEAN CacheDisable,
IN BOOLEAN WriteThrough); IN BOOLEAN WriteThrough);

View File

@@ -35,7 +35,7 @@ namespace MM
STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer); STATIC XTAPI PVOID GetPdeVirtualAddress(IN PMMPDE PdePointer);
STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address); STATIC XTAPI PMMPPE GetPpeAddress(IN PVOID Address);
STATIC XTAPI PVOID GetPpeVirtualAddress(IN PMMPPE PpePointer); STATIC XTAPI PVOID GetPpeVirtualAddress(IN PMMPPE PpePointer);
STATIC XTAPI ULONG_PTR GetPte(IN PMMPTE PtePointer); STATIC XTAPI ULONGLONG GetPte(IN PMMPTE PtePointer);
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address); STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);
STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte, STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte,
PMMPTE StartPte); PMMPTE StartPte);
@@ -53,9 +53,9 @@ namespace MM
IN BOOLEAN Value); IN BOOLEAN Value);
STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer, STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask); IN ULONGLONG AttributesMask);
STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer, STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes); IN ULONGLONG Attributes);
STATIC XTAPI VOID SetPteCaching(IN PMMPTE PtePointer, STATIC XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
IN BOOLEAN CacheDisable, IN BOOLEAN CacheDisable,
IN BOOLEAN WriteThrough); IN BOOLEAN WriteThrough);

View File

@@ -302,7 +302,7 @@ MM::PageMap::GetPpeOffset(IN PVOID Address)
* @since XT 1.0 * @since XT 1.0
*/ */
XTAPI XTAPI
ULONG_PTR ULONGLONG
MM::PageMap::GetPte(IN PMMPTE PtePointer) MM::PageMap::GetPte(IN PMMPTE PtePointer)
{ {
/* Return PTE value */ /* Return PTE value */
@@ -574,7 +574,7 @@ XTAPI
VOID VOID
MM::PageMap::SetPte(IN PMMPTE PtePointer, MM::PageMap::SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask) IN ULONGLONG AttributesMask)
{ {
/* Set PTE */ /* Set PTE */
PtePointer->Hardware.PageFrameNumber = PageFrameNumber; PtePointer->Hardware.PageFrameNumber = PageFrameNumber;
@@ -598,7 +598,7 @@ MM::PageMap::SetPte(IN PMMPTE PtePointer,
XTAPI XTAPI
VOID VOID
MM::PageMap::SetPte(IN PMMPTE PtePointer, MM::PageMap::SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes) IN ULONGLONG Attributes)
{ {
PtePointer->Long = Attributes; PtePointer->Long = Attributes;
} }

View File

@@ -80,7 +80,6 @@ MM::PageMap::GetPdeOffset(IN PVOID Address)
return ((((ULONG_PTR)(Address)) >> PageMapInfo.PdiShift) & (PageMapInfo.Xpa ? 0x1FF : 0x3FF)); return ((((ULONG_PTR)(Address)) >> PageMapInfo.PdiShift) & (PageMapInfo.Xpa ? 0x1FF : 0x3FF));
} }
/** /**
* Gets the address of the PPE (Page Directory Pointer Table Entry), that maps given address. * Gets the address of the PPE (Page Directory Pointer Table Entry), that maps given address.
* *
@@ -174,7 +173,6 @@ MM::PageMap::GetPteOffset(IN PVOID Address)
return ((((ULONG_PTR)(Address)) >> MM_PTI_SHIFT) & (PageMapInfo.Xpa ? 0x1FF : 0x3FF)); return ((((ULONG_PTR)(Address)) >> MM_PTI_SHIFT) & (PageMapInfo.Xpa ? 0x1FF : 0x3FF));
} }
/** /**
* Gets the status of Extended Paging Address (XPA) mode. * Gets the status of Extended Paging Address (XPA) mode.
* *
@@ -318,7 +316,7 @@ MM::PageMapBasic::GetPdeVirtualAddress(IN PMMPDE PdePointer)
return ((PVOID)((ULONG)(PdePointer) << 20)); return ((PVOID)((ULONG)(PdePointer) << 20));
} }
/** /**
* Gets the entire contents of a PML2 Page Table Entry (PTE) as a single value. * Gets the entire contents of a PML2 Page Table Entry (PTE) as a single value.
* *
* @param PtePointer * @param PtePointer
@@ -329,12 +327,13 @@ MM::PageMapBasic::GetPdeVirtualAddress(IN PMMPDE PdePointer)
* @since XT 1.0 * @since XT 1.0
*/ */
XTAPI XTAPI
ULONG_PTR ULONGLONG
MM::PageMapBasic::GetPte(IN PMMPTE PtePointer) MM::PageMapBasic::GetPte(IN PMMPTE PtePointer)
{ {
/* Return PTE value */ /* Return PTE value */
return PtePointer->Pml2.Long; return (ULONGLONG)PtePointer->Pml2.Long;
} }
/** /**
* Calculates the distance between two PTE pointers. * Calculates the distance between two PTE pointers.
* *
@@ -549,12 +548,12 @@ XTAPI
VOID VOID
MM::PageMapBasic::SetPte(IN PMMPTE PtePointer, MM::PageMapBasic::SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask) IN ULONGLONG AttributesMask)
{ {
/* Set PTE */ /* Set PTE */
PtePointer->Pml2.Hardware.PageFrameNumber = PageFrameNumber; PtePointer->Pml2.Hardware.PageFrameNumber = PageFrameNumber;
PtePointer->Pml2.Hardware.Valid = 1; PtePointer->Pml2.Hardware.Valid = 1;
PtePointer->Pml2.Long |= AttributesMask; PtePointer->Pml2.Long |= (ULONG)AttributesMask;
} }
/** /**
@@ -573,9 +572,9 @@ MM::PageMapBasic::SetPte(IN PMMPTE PtePointer,
XTAPI XTAPI
VOID VOID
MM::PageMapBasic::SetPte(IN PMMPTE PtePointer, MM::PageMapBasic::SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes) IN ULONGLONG Attributes)
{ {
PtePointer->Pml2.Long = Attributes; PtePointer->Pml2.Long = (ULONG)Attributes;
} }
/** /**
@@ -626,14 +625,14 @@ MM::PageMapBasic::TransitionPte(IN PMMPTE PointerPte,
MMPTE TempPte; MMPTE TempPte;
/* Set transition PTE */ /* Set transition PTE */
TempPte = *PointerPte; TempPte.Pml2.Long = PointerPte->Pml2.Long;
TempPte.Pml2.Software.Protection = Protection; TempPte.Pml2.Software.Protection = Protection;
TempPte.Pml2.Software.Prototype = 0; TempPte.Pml2.Software.Prototype = 0;
TempPte.Pml2.Software.Transition = 1; TempPte.Pml2.Software.Transition = 1;
TempPte.Pml2.Software.Valid = 0; TempPte.Pml2.Software.Valid = 0;
/* Write PTE value */ /* Write PTE value */
*PointerPte = TempPte; PointerPte->Pml2.Long = TempPte.Pml2.Long;
} }
/** /**
@@ -798,7 +797,7 @@ MM::PageMapXpa::GetPdeVirtualAddress(IN PMMPDE PdePointer)
* @since XT 1.0 * @since XT 1.0
*/ */
XTAPI XTAPI
ULONG_PTR ULONGLONG
MM::PageMapXpa::GetPte(IN PMMPTE PtePointer) MM::PageMapXpa::GetPte(IN PMMPTE PtePointer)
{ {
/* Return PTE value */ /* Return PTE value */
@@ -1018,7 +1017,7 @@ XTAPI
VOID VOID
MM::PageMapXpa::SetPte(IN PMMPTE PtePointer, MM::PageMapXpa::SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask) IN ULONGLONG AttributesMask)
{ {
/* Set PTE */ /* Set PTE */
PtePointer->Pml3.Hardware.PageFrameNumber = PageFrameNumber; PtePointer->Pml3.Hardware.PageFrameNumber = PageFrameNumber;
@@ -1042,7 +1041,7 @@ MM::PageMapXpa::SetPte(IN PMMPTE PtePointer,
XTAPI XTAPI
VOID VOID
MM::PageMapXpa::SetPte(IN PMMPTE PtePointer, MM::PageMapXpa::SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes) IN ULONGLONG Attributes)
{ {
PtePointer->Pml3.Long = Attributes; PtePointer->Pml3.Long = Attributes;
} }
@@ -1095,14 +1094,14 @@ MM::PageMapXpa::TransitionPte(IN PMMPTE PointerPte,
MMPTE TempPte; MMPTE TempPte;
/* Set transition PTE */ /* Set transition PTE */
TempPte = *PointerPte; TempPte.Pml3.Long = PointerPte->Pml3.Long;
TempPte.Pml3.Software.Protection = Protection; TempPte.Pml3.Software.Protection = Protection;
TempPte.Pml3.Software.Prototype = 0; TempPte.Pml3.Software.Prototype = 0;
TempPte.Pml3.Software.Transition = 1; TempPte.Pml3.Software.Transition = 1;
TempPte.Pml3.Software.Valid = 0; TempPte.Pml3.Software.Valid = 0;
/* Write PTE value */ /* Write PTE value */
*PointerPte = TempPte; PointerPte->Pml3.Long = TempPte.Pml3.Long;
} }
/** /**
@@ -1125,4 +1124,4 @@ MM::PageMapXpa::WritePte(IN PMMPTE Pte,
{ {
/* Write PTE value */ /* Write PTE value */
Pte->Pml3.Long = Value.Pml3.Long; Pte->Pml3.Long = Value.Pml3.Long;
} }

View File

@@ -321,7 +321,7 @@ MM::Paging::GetPpeVirtualAddress(IN PMMPPE PpePointer)
* @since XT 1.0 * @since XT 1.0
*/ */
XTAPI XTAPI
ULONG_PTR ULONGLONG
MM::Paging::GetPte(IN PMMPTE PtePointer) MM::Paging::GetPte(IN PMMPTE PtePointer)
{ {
/* Return PTE value */ /* Return PTE value */
@@ -578,7 +578,7 @@ XTAPI
VOID VOID
MM::Paging::SetPte(IN PMMPTE PtePointer, MM::Paging::SetPte(IN PMMPTE PtePointer,
IN PFN_NUMBER PageFrameNumber, IN PFN_NUMBER PageFrameNumber,
IN ULONG_PTR AttributesMask) IN ULONGLONG AttributesMask)
{ {
/* Set PTE */ /* Set PTE */
PmlRoutines->SetPte(PtePointer, PageFrameNumber, AttributesMask); PmlRoutines->SetPte(PtePointer, PageFrameNumber, AttributesMask);
@@ -600,7 +600,7 @@ MM::Paging::SetPte(IN PMMPTE PtePointer,
XTAPI XTAPI
VOID VOID
MM::Paging::SetPte(IN PMMPTE PtePointer, MM::Paging::SetPte(IN PMMPTE PtePointer,
IN ULONG_PTR Attributes) IN ULONGLONG Attributes)
{ {
PmlRoutines->SetPte(PtePointer, Attributes); PmlRoutines->SetPte(PtePointer, Attributes);
} }