Unify PTE pointer types across MM subsystem
This commit is contained in:
@@ -23,7 +23,7 @@ namespace MM
|
|||||||
public:
|
public:
|
||||||
XTAPI PMMPTE AdvancePte(IN PMMPTE Pte,
|
XTAPI PMMPTE AdvancePte(IN PMMPTE Pte,
|
||||||
IN ULONG Count);
|
IN ULONG Count);
|
||||||
XTAPI VOID ClearPte(IN PHARDWARE_PTE PtePointer);
|
XTAPI VOID ClearPte(IN PMMPTE PtePointer);
|
||||||
XTAPI ULONGLONG GetEmptyPteList(VOID);
|
XTAPI ULONGLONG GetEmptyPteList(VOID);
|
||||||
XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte);
|
XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte);
|
||||||
XTAPI PMMPTE GetNextPte(IN PMMPTE Pte);
|
XTAPI PMMPTE GetNextPte(IN PMMPTE Pte);
|
||||||
@@ -45,15 +45,15 @@ namespace MM
|
|||||||
XTAPI ULONG GetPxeIndex(IN PVOID Address);
|
XTAPI ULONG GetPxeIndex(IN PVOID Address);
|
||||||
XTAPI PVOID GetPxeVirtualAddress(IN PMMPXE PxePointer);
|
XTAPI PVOID GetPxeVirtualAddress(IN PMMPXE PxePointer);
|
||||||
VIRTUAL XTAPI VOID InitializePageMapInfo(VOID) = 0;
|
VIRTUAL XTAPI VOID InitializePageMapInfo(VOID) = 0;
|
||||||
XTAPI BOOLEAN PteValid(IN PHARDWARE_PTE PtePointer);
|
XTAPI BOOLEAN PteValid(IN PMMPTE PtePointer);
|
||||||
XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
||||||
IN ULONG_PTR Value);
|
IN ULONG_PTR Value);
|
||||||
XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
||||||
IN BOOLEAN Value);
|
IN BOOLEAN Value);
|
||||||
XTAPI VOID SetPte(IN PHARDWARE_PTE PtePointer,
|
XTAPI VOID SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable);
|
IN BOOLEAN Writable);
|
||||||
XTAPI VOID SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough);
|
IN BOOLEAN WriteThrough);
|
||||||
} PAGEMAP, *PPAGEMAP;
|
} PAGEMAP, *PPAGEMAP;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace MM
|
|||||||
public:
|
public:
|
||||||
VIRTUAL XTAPI PMMPTE AdvancePte(IN PMMPTE Pte,
|
VIRTUAL XTAPI PMMPTE AdvancePte(IN PMMPTE Pte,
|
||||||
IN ULONG Count) = 0;
|
IN ULONG Count) = 0;
|
||||||
XTAPI VOID ClearPte(IN PHARDWARE_PTE PtePointer);
|
XTAPI VOID ClearPte(IN PMMPTE PtePointer);
|
||||||
XTAPI ULONG GetEmptyPteList(VOID);
|
XTAPI ULONG GetEmptyPteList(VOID);
|
||||||
VIRTUAL XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte) = 0;
|
VIRTUAL XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte) = 0;
|
||||||
VIRTUAL XTAPI PMMPTE GetNextPte(IN PMMPTE Pte) = 0;
|
VIRTUAL XTAPI PMMPTE GetNextPte(IN PMMPTE Pte) = 0;
|
||||||
@@ -39,15 +39,15 @@ namespace MM
|
|||||||
VIRTUAL XTAPI ULONG GetPteSize(VOID) = 0;
|
VIRTUAL XTAPI ULONG GetPteSize(VOID) = 0;
|
||||||
XTAPI PVOID GetPteVirtualAddress(IN PMMPTE PtePointer);
|
XTAPI PVOID GetPteVirtualAddress(IN PMMPTE PtePointer);
|
||||||
VIRTUAL XTAPI VOID InitializePageMapInfo(VOID) = 0;
|
VIRTUAL XTAPI VOID InitializePageMapInfo(VOID) = 0;
|
||||||
VIRTUAL XTAPI BOOLEAN PteValid(IN PHARDWARE_PTE PtePointer) = 0;
|
VIRTUAL XTAPI BOOLEAN PteValid(IN PMMPTE PtePointer) = 0;
|
||||||
VIRTUAL XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
VIRTUAL XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
||||||
IN ULONG_PTR Value) = 0;
|
IN ULONG_PTR Value) = 0;
|
||||||
VIRTUAL XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
VIRTUAL XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
||||||
IN BOOLEAN Value) = 0;
|
IN BOOLEAN Value) = 0;
|
||||||
VIRTUAL XTAPI VOID SetPte(IN PHARDWARE_PTE PtePointer,
|
VIRTUAL XTAPI VOID SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable) = 0;
|
IN BOOLEAN Writable) = 0;
|
||||||
VIRTUAL XTAPI VOID SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
VIRTUAL XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough) = 0;
|
IN BOOLEAN WriteThrough) = 0;
|
||||||
} PAGEMAP, *PPAGEMAP;
|
} PAGEMAP, *PPAGEMAP;
|
||||||
@@ -62,15 +62,15 @@ namespace MM
|
|||||||
XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
|
XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
|
||||||
XTAPI ULONG GetPteSize(VOID);
|
XTAPI ULONG GetPteSize(VOID);
|
||||||
XTAPI VOID InitializePageMapInfo(VOID);
|
XTAPI VOID InitializePageMapInfo(VOID);
|
||||||
XTAPI BOOLEAN PteValid(IN PHARDWARE_PTE PtePointer);
|
XTAPI BOOLEAN PteValid(IN PMMPTE PtePointer);
|
||||||
XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
||||||
IN ULONG_PTR Value);
|
IN ULONG_PTR Value);
|
||||||
XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
||||||
IN BOOLEAN Value);
|
IN BOOLEAN Value);
|
||||||
XTAPI VOID SetPte(IN PHARDWARE_PTE PtePointer,
|
XTAPI VOID SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable);
|
IN BOOLEAN Writable);
|
||||||
XTAPI VOID SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough);
|
IN BOOLEAN WriteThrough);
|
||||||
};
|
};
|
||||||
@@ -85,15 +85,15 @@ namespace MM
|
|||||||
XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
|
XTAPI BOOLEAN GetOneEntry(IN PMMPTE Pte);
|
||||||
XTAPI ULONG GetPteSize(VOID);
|
XTAPI ULONG GetPteSize(VOID);
|
||||||
XTAPI VOID InitializePageMapInfo(VOID);
|
XTAPI VOID InitializePageMapInfo(VOID);
|
||||||
XTAPI BOOLEAN PteValid(IN PHARDWARE_PTE PtePointer);
|
XTAPI BOOLEAN PteValid(IN PMMPTE PtePointer);
|
||||||
XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
||||||
IN ULONG_PTR Value);
|
IN ULONG_PTR Value);
|
||||||
XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
||||||
IN BOOLEAN Value);
|
IN BOOLEAN Value);
|
||||||
XTAPI VOID SetPte(IN PHARDWARE_PTE PtePointer,
|
XTAPI VOID SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable);
|
IN BOOLEAN Writable);
|
||||||
XTAPI VOID SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough);
|
IN BOOLEAN WriteThrough);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace MM
|
|||||||
public:
|
public:
|
||||||
STATIC XTAPI PMMPTE AdvancePte(IN PMMPTE Pte,
|
STATIC XTAPI PMMPTE AdvancePte(IN PMMPTE Pte,
|
||||||
IN ULONG Count);
|
IN ULONG Count);
|
||||||
STATIC XTAPI VOID ClearPte(IN PHARDWARE_PTE PtePointer);
|
STATIC XTAPI VOID ClearPte(IN PMMPTE PtePointer);
|
||||||
STATIC XTAPI VOID FlushTlb(VOID);
|
STATIC XTAPI VOID FlushTlb(VOID);
|
||||||
STATIC XTAPI ULONG_PTR GetEmptyPteList(VOID);
|
STATIC XTAPI ULONG_PTR GetEmptyPteList(VOID);
|
||||||
STATIC XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte);
|
STATIC XTAPI ULONG_PTR GetNextEntry(IN PMMPTE Pte);
|
||||||
@@ -34,15 +34,15 @@ namespace MM
|
|||||||
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);
|
STATIC XTAPI PMMPTE GetPteAddress(IN PVOID Address);
|
||||||
STATIC XTAPI ULONG GetPteSize(VOID);
|
STATIC XTAPI ULONG GetPteSize(VOID);
|
||||||
STATIC XTAPI VOID InitializePageMapSupport(VOID);
|
STATIC XTAPI VOID InitializePageMapSupport(VOID);
|
||||||
STATIC XTAPI BOOLEAN PteValid(IN PHARDWARE_PTE PtePointer);
|
STATIC XTAPI BOOLEAN PteValid(IN PMMPTE PtePointer);
|
||||||
STATIC XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
STATIC XTAPI VOID SetNextEntry(IN PMMPTE Pte,
|
||||||
IN ULONG_PTR Value);
|
IN ULONG_PTR Value);
|
||||||
STATIC XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
STATIC XTAPI VOID SetOneEntry(IN PMMPTE Pte,
|
||||||
IN BOOLEAN Value);
|
IN BOOLEAN Value);
|
||||||
STATIC XTAPI VOID SetPte(IN PHARDWARE_PTE PtePointer,
|
STATIC XTAPI VOID SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable);
|
IN BOOLEAN Writable);
|
||||||
STATIC XTAPI VOID SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
STATIC XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough);
|
IN BOOLEAN WriteThrough);
|
||||||
STATIC XTFASTCALL VOID ZeroPages(IN PVOID Address,
|
STATIC XTFASTCALL VOID ZeroPages(IN PVOID Address,
|
||||||
|
|||||||
@@ -43,14 +43,10 @@ MM::PageMap::AdvancePte(IN PMMPTE Pte,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::PageMap::ClearPte(IN PHARDWARE_PTE PtePointer)
|
MM::PageMap::ClearPte(IN PMMPTE PtePointer)
|
||||||
{
|
{
|
||||||
/* Clear PTE */
|
/* Clear PTE */
|
||||||
PtePointer->CacheDisable = 0;
|
PtePointer->Long = 0;
|
||||||
PtePointer->PageFrameNumber = 0;
|
|
||||||
PtePointer->Valid = 0;
|
|
||||||
PtePointer->Writable = 0;
|
|
||||||
PtePointer->WriteThrough = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -432,10 +428,10 @@ MM::PageMap::GetPxeVirtualAddress(IN PMMPXE PxePointer)
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
MM::PageMap::PteValid(IN PHARDWARE_PTE PtePointer)
|
MM::PageMap::PteValid(IN PMMPTE PtePointer)
|
||||||
{
|
{
|
||||||
/* Check if PTE is valid */
|
/* Check if PTE is valid */
|
||||||
return (BOOLEAN)PtePointer->Valid;
|
return (BOOLEAN)PtePointer->Hardware.Valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -500,14 +496,14 @@ MM::PageMap::SetOneEntry(IN PMMPTE Pte,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::PageMap::SetPte(IN PHARDWARE_PTE PtePointer,
|
MM::PageMap::SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable)
|
IN BOOLEAN Writable)
|
||||||
{
|
{
|
||||||
/* Set PTE */
|
/* Set PTE */
|
||||||
PtePointer->PageFrameNumber = PageFrameNumber;
|
PtePointer->Hardware.PageFrameNumber = PageFrameNumber;
|
||||||
PtePointer->Valid = 1;
|
PtePointer->Hardware.Valid = 1;
|
||||||
PtePointer->Writable = Writable;
|
PtePointer->Hardware.Writable = Writable;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -528,13 +524,13 @@ MM::PageMap::SetPte(IN PHARDWARE_PTE PtePointer,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::PageMap::SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
MM::PageMap::SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough)
|
IN BOOLEAN WriteThrough)
|
||||||
{
|
{
|
||||||
/* Set caching attributes */
|
/* Set caching attributes */
|
||||||
PtePointer->CacheDisable = CacheDisable;
|
PtePointer->Hardware.CacheDisable = CacheDisable;
|
||||||
PtePointer->WriteThrough = WriteThrough;
|
PtePointer->Hardware.WriteThrough = WriteThrough;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ MM::HardwarePool::MapHardwareMemory(IN PHYSICAL_ADDRESS PhysicalAddress,
|
|||||||
{
|
{
|
||||||
PVOID BaseAddress, ReturnAddress;
|
PVOID BaseAddress, ReturnAddress;
|
||||||
PFN_NUMBER MappedPages;
|
PFN_NUMBER MappedPages;
|
||||||
PHARDWARE_PTE PtePointer;
|
PMMPTE PtePointer;
|
||||||
|
|
||||||
/* Initialize variables */
|
/* Initialize variables */
|
||||||
BaseAddress = HardwareHeapStart;
|
BaseAddress = HardwareHeapStart;
|
||||||
@@ -189,7 +189,7 @@ MM::HardwarePool::MapHardwareMemory(IN PHYSICAL_ADDRESS PhysicalAddress,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Get PTE pointer and advance to next page */
|
/* Get PTE pointer and advance to next page */
|
||||||
PtePointer = (PHARDWARE_PTE)MM::Paging::GetPteAddress(ReturnAddress);
|
PtePointer = MM::Paging::GetPteAddress(ReturnAddress);
|
||||||
ReturnAddress = (PVOID)((ULONG_PTR)ReturnAddress + MM_PAGE_SIZE);
|
ReturnAddress = (PVOID)((ULONG_PTR)ReturnAddress + MM_PAGE_SIZE);
|
||||||
|
|
||||||
/* Check if PTE is valid */
|
/* Check if PTE is valid */
|
||||||
@@ -219,7 +219,7 @@ MM::HardwarePool::MapHardwareMemory(IN PHYSICAL_ADDRESS PhysicalAddress,
|
|||||||
while(MappedPages--)
|
while(MappedPages--)
|
||||||
{
|
{
|
||||||
/* Get PTE pointer */
|
/* Get PTE pointer */
|
||||||
PtePointer = (PHARDWARE_PTE)MM::Paging::GetPteAddress(BaseAddress);
|
PtePointer = MM::Paging::GetPteAddress(BaseAddress);
|
||||||
|
|
||||||
/* Fill the PTE */
|
/* Fill the PTE */
|
||||||
MM::Paging::SetPte(PtePointer, (PFN_NUMBER)(PhysicalAddress.QuadPart >> MM_PAGE_SHIFT), TRUE);
|
MM::Paging::SetPte(PtePointer, (PFN_NUMBER)(PhysicalAddress.QuadPart >> MM_PAGE_SHIFT), TRUE);
|
||||||
@@ -259,18 +259,18 @@ VOID
|
|||||||
MM::HardwarePool::MarkHardwareMemoryWriteThrough(IN PVOID VirtualAddress,
|
MM::HardwarePool::MarkHardwareMemoryWriteThrough(IN PVOID VirtualAddress,
|
||||||
IN PFN_NUMBER PageCount)
|
IN PFN_NUMBER PageCount)
|
||||||
{
|
{
|
||||||
PHARDWARE_PTE PtePointer;
|
PMMPTE PtePointer;
|
||||||
PFN_NUMBER Page;
|
PFN_NUMBER Page;
|
||||||
|
|
||||||
/* Get PTE address from virtual address */
|
/* Get PTE address from virtual address */
|
||||||
PtePointer = (PHARDWARE_PTE)MM::Paging::GetPteAddress(VirtualAddress);
|
PtePointer = MM::Paging::GetPteAddress(VirtualAddress);
|
||||||
|
|
||||||
/* Iterate through mapped pages */
|
/* Iterate through mapped pages */
|
||||||
for(Page = 0; Page < PageCount; Page++)
|
for(Page = 0; Page < PageCount; Page++)
|
||||||
{
|
{
|
||||||
/* Mark pages as CD/WT */
|
/* Mark pages as CD/WT */
|
||||||
MM::Paging::SetPteCaching(PtePointer, TRUE, TRUE);
|
MM::Paging::SetPteCaching(PtePointer, TRUE, TRUE);
|
||||||
PtePointer++;
|
MM::Paging::GetNextEntry(PtePointer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -296,10 +296,10 @@ MM::HardwarePool::RemapHardwareMemory(IN PVOID VirtualAddress,
|
|||||||
IN PHYSICAL_ADDRESS PhysicalAddress,
|
IN PHYSICAL_ADDRESS PhysicalAddress,
|
||||||
IN BOOLEAN FlushTlb)
|
IN BOOLEAN FlushTlb)
|
||||||
{
|
{
|
||||||
PHARDWARE_PTE PtePointer;
|
PMMPTE PtePointer;
|
||||||
|
|
||||||
/* Get PTE address from virtual address */
|
/* Get PTE address from virtual address */
|
||||||
PtePointer = (PHARDWARE_PTE)MM::Paging::GetPteAddress(VirtualAddress);
|
PtePointer = MM::Paging::GetPteAddress(VirtualAddress);
|
||||||
|
|
||||||
/* Remap the PTE */
|
/* Remap the PTE */
|
||||||
MM::Paging::SetPte(PtePointer, (PFN_NUMBER)(PhysicalAddress.QuadPart >> MM_PAGE_SHIFT), TRUE);
|
MM::Paging::SetPte(PtePointer, (PFN_NUMBER)(PhysicalAddress.QuadPart >> MM_PAGE_SHIFT), TRUE);
|
||||||
@@ -334,7 +334,7 @@ MM::HardwarePool::UnmapHardwareMemory(IN PVOID VirtualAddress,
|
|||||||
IN PFN_NUMBER PageCount,
|
IN PFN_NUMBER PageCount,
|
||||||
IN BOOLEAN FlushTlb)
|
IN BOOLEAN FlushTlb)
|
||||||
{
|
{
|
||||||
PHARDWARE_PTE PtePointer;
|
PMMPTE PtePointer;
|
||||||
PFN_NUMBER Page;
|
PFN_NUMBER Page;
|
||||||
|
|
||||||
/* Check if address is valid hardware memory */
|
/* Check if address is valid hardware memory */
|
||||||
@@ -348,7 +348,7 @@ MM::HardwarePool::UnmapHardwareMemory(IN PVOID VirtualAddress,
|
|||||||
VirtualAddress = (PVOID)((ULONG_PTR)VirtualAddress & ~(MM_PAGE_SIZE - 1));
|
VirtualAddress = (PVOID)((ULONG_PTR)VirtualAddress & ~(MM_PAGE_SIZE - 1));
|
||||||
|
|
||||||
/* Get PTE address from virtual address */
|
/* Get PTE address from virtual address */
|
||||||
PtePointer = (PHARDWARE_PTE)MM::Paging::GetPteAddress(VirtualAddress);
|
PtePointer = MM::Paging::GetPteAddress(VirtualAddress);
|
||||||
|
|
||||||
/* Iterate through mapped pages */
|
/* Iterate through mapped pages */
|
||||||
for(Page = 0; Page < PageCount; Page++)
|
for(Page = 0; Page < PageCount; Page++)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::PageMap::ClearPte(IN PHARDWARE_PTE PtePointer)
|
MM::PageMap::ClearPte(IN PMMPTE PtePointer)
|
||||||
{
|
{
|
||||||
/* Clear PTE */
|
/* Clear PTE */
|
||||||
PtePointer->Long = 0;
|
PtePointer->Long = 0;
|
||||||
@@ -339,10 +339,10 @@ MM::PageMapBasic::InitializePageMapInfo(VOID)
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
MM::PageMapBasic::PteValid(IN PHARDWARE_PTE PtePointer)
|
MM::PageMapBasic::PteValid(IN PMMPTE PtePointer)
|
||||||
{
|
{
|
||||||
/* Check if PTE is valid */
|
/* Check if PTE is valid */
|
||||||
return (BOOLEAN)PtePointer->Pml2.Valid;
|
return (BOOLEAN)PtePointer->Pml2.Hardware.Valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -407,14 +407,14 @@ MM::PageMapBasic::SetOneEntry(IN PMMPTE Pte,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::PageMapBasic::SetPte(IN PHARDWARE_PTE PtePointer,
|
MM::PageMapBasic::SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable)
|
IN BOOLEAN Writable)
|
||||||
{
|
{
|
||||||
/* Set PTE */
|
/* Set PTE */
|
||||||
PtePointer->Pml2.PageFrameNumber = PageFrameNumber;
|
PtePointer->Pml2.Hardware.PageFrameNumber = PageFrameNumber;
|
||||||
PtePointer->Pml2.Valid = 1;
|
PtePointer->Pml2.Hardware.Valid = 1;
|
||||||
PtePointer->Pml2.Writable = Writable;
|
PtePointer->Pml2.Hardware.Writable = Writable;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -435,13 +435,13 @@ MM::PageMapBasic::SetPte(IN PHARDWARE_PTE PtePointer,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::PageMapBasic::SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
MM::PageMapBasic::SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough)
|
IN BOOLEAN WriteThrough)
|
||||||
{
|
{
|
||||||
/* Set caching attributes */
|
/* Set caching attributes */
|
||||||
PtePointer->Pml2.CacheDisable = CacheDisable;
|
PtePointer->Pml2.Hardware.CacheDisable = CacheDisable;
|
||||||
PtePointer->Pml2.WriteThrough = WriteThrough;
|
PtePointer->Pml2.Hardware.WriteThrough = WriteThrough;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -573,9 +573,9 @@ MM::PageMapXpa::InitializePageMapInfo(VOID)
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
MM::PageMapXpa::PteValid(IN PHARDWARE_PTE PtePointer)
|
MM::PageMapXpa::PteValid(IN PMMPTE PtePointer)
|
||||||
{
|
{
|
||||||
return (BOOLEAN)PtePointer->Pml3.Valid;
|
return (BOOLEAN)PtePointer->Pml3.Hardware.Valid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -640,14 +640,14 @@ MM::PageMapXpa::SetOneEntry(IN PMMPTE Pte,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::PageMapXpa::SetPte(IN PHARDWARE_PTE PtePointer,
|
MM::PageMapXpa::SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable)
|
IN BOOLEAN Writable)
|
||||||
{
|
{
|
||||||
/* Set PTE */
|
/* Set PTE */
|
||||||
PtePointer->Pml3.PageFrameNumber = PageFrameNumber;
|
PtePointer->Pml3.Hardware.PageFrameNumber = PageFrameNumber;
|
||||||
PtePointer->Pml3.Valid = 1;
|
PtePointer->Pml3.Hardware.Valid = 1;
|
||||||
PtePointer->Pml3.Writable = Writable;
|
PtePointer->Pml3.Hardware.Writable = Writable;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -668,11 +668,11 @@ MM::PageMapXpa::SetPte(IN PHARDWARE_PTE PtePointer,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::PageMapXpa::SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
MM::PageMapXpa::SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough)
|
IN BOOLEAN WriteThrough)
|
||||||
{
|
{
|
||||||
/* Set caching attributes */
|
/* Set caching attributes */
|
||||||
PtePointer->Pml3.CacheDisable = CacheDisable;
|
PtePointer->Pml3.Hardware.CacheDisable = CacheDisable;
|
||||||
PtePointer->Pml3.WriteThrough = WriteThrough;
|
PtePointer->Pml3.Hardware.WriteThrough = WriteThrough;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ MM::Paging::AdvancePte(IN PMMPTE Pte,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::Paging::ClearPte(IN PHARDWARE_PTE PtePointer)
|
MM::Paging::ClearPte(IN PMMPTE PtePointer)
|
||||||
{
|
{
|
||||||
/* Clear PTE */
|
/* Clear PTE */
|
||||||
PmlRoutines->ClearPte(PtePointer);
|
PmlRoutines->ClearPte(PtePointer);
|
||||||
@@ -312,7 +312,7 @@ MM::Paging::InitializePageMapSupport(VOID)
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
MM::Paging::PteValid(IN PHARDWARE_PTE PtePointer)
|
MM::Paging::PteValid(IN PMMPTE PtePointer)
|
||||||
{
|
{
|
||||||
/* Check if PTE is valid */
|
/* Check if PTE is valid */
|
||||||
return PmlRoutines->PteValid(PtePointer);
|
return PmlRoutines->PteValid(PtePointer);
|
||||||
@@ -380,7 +380,7 @@ MM::Paging::SetOneEntry(IN PMMPTE Pte,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::Paging::SetPte(IN PHARDWARE_PTE PtePointer,
|
MM::Paging::SetPte(IN PMMPTE PtePointer,
|
||||||
IN PFN_NUMBER PageFrameNumber,
|
IN PFN_NUMBER PageFrameNumber,
|
||||||
IN BOOLEAN Writable)
|
IN BOOLEAN Writable)
|
||||||
{
|
{
|
||||||
@@ -406,7 +406,7 @@ MM::Paging::SetPte(IN PHARDWARE_PTE PtePointer,
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::Paging::SetPteCaching(IN PHARDWARE_PTE PtePointer,
|
MM::Paging::SetPteCaching(IN PMMPTE PtePointer,
|
||||||
IN BOOLEAN CacheDisable,
|
IN BOOLEAN CacheDisable,
|
||||||
IN BOOLEAN WriteThrough)
|
IN BOOLEAN WriteThrough)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user