Initialize system PTEs with arch-specific list terminator
This commit is contained in:
@@ -19,6 +19,7 @@ namespace MM
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
STATIC MMPTE FirstSystemFreePte[MaximumPtePoolTypes];
|
STATIC MMPTE FirstSystemFreePte[MaximumPtePoolTypes];
|
||||||
|
STATIC ULONG_PTR ListTerminator;
|
||||||
STATIC PMMPTE SystemPteBase;
|
STATIC PMMPTE SystemPteBase;
|
||||||
STATIC PMMPTE SystemPtesEnd[MaximumPtePoolTypes];
|
STATIC PMMPTE SystemPtesEnd[MaximumPtePoolTypes];
|
||||||
STATIC PMMPTE SystemPtesStart[MaximumPtePoolTypes];
|
STATIC PMMPTE SystemPtesStart[MaximumPtePoolTypes];
|
||||||
@@ -31,7 +32,7 @@ namespace MM
|
|||||||
STATIC XTAPI PMMPTE GetSystemPteBaseAddress(VOID);
|
STATIC XTAPI PMMPTE GetSystemPteBaseAddress(VOID);
|
||||||
STATIC XTAPI PMMPTE GetValidPte(VOID);
|
STATIC XTAPI PMMPTE GetValidPte(VOID);
|
||||||
STATIC XTAPI VOID InitializePageTable(VOID);
|
STATIC XTAPI VOID InitializePageTable(VOID);
|
||||||
STATIC XTAPI VOID InitializePteTemplate(VOID);
|
STATIC XTAPI VOID InitializeSystemPte(VOID);
|
||||||
STATIC XTAPI VOID InitializeSystemPteSpace(VOID);
|
STATIC XTAPI VOID InitializeSystemPteSpace(VOID);
|
||||||
STATIC XTAPI VOID MapP5E(PVOID StartAddress,
|
STATIC XTAPI VOID MapP5E(PVOID StartAddress,
|
||||||
PVOID EndAddress,
|
PVOID EndAddress,
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ namespace MM
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
STATIC MMPTE FirstSystemFreePte[MaximumPtePoolTypes];
|
STATIC MMPTE FirstSystemFreePte[MaximumPtePoolTypes];
|
||||||
|
STATIC ULONG_PTR ListTerminator;
|
||||||
STATIC PMMPTE SystemPteBase;
|
STATIC PMMPTE SystemPteBase;
|
||||||
STATIC PMMPTE SystemPtesEnd[MaximumPtePoolTypes];
|
STATIC PMMPTE SystemPtesEnd[MaximumPtePoolTypes];
|
||||||
STATIC PMMPTE SystemPtesStart[MaximumPtePoolTypes];
|
STATIC PMMPTE SystemPtesStart[MaximumPtePoolTypes];
|
||||||
@@ -31,7 +32,7 @@ namespace MM
|
|||||||
STATIC XTAPI PMMPTE GetSystemPteBaseAddress(VOID);
|
STATIC XTAPI PMMPTE GetSystemPteBaseAddress(VOID);
|
||||||
STATIC XTAPI PMMPTE GetValidPte(VOID);
|
STATIC XTAPI PMMPTE GetValidPte(VOID);
|
||||||
STATIC XTAPI VOID InitializePageTable(VOID);
|
STATIC XTAPI VOID InitializePageTable(VOID);
|
||||||
STATIC XTAPI VOID InitializePteTemplate(VOID);
|
STATIC XTAPI VOID InitializeSystemPte(VOID);
|
||||||
STATIC XTAPI VOID InitializeSystemPteSpace(VOID);
|
STATIC XTAPI VOID InitializeSystemPteSpace(VOID);
|
||||||
STATIC XTAPI VOID MapPDE(PVOID StartAddress,
|
STATIC XTAPI VOID MapPDE(PVOID StartAddress,
|
||||||
PVOID EndAddress,
|
PVOID EndAddress,
|
||||||
|
|||||||
@@ -154,7 +154,7 @@ MM::Pte::InitializePageTable(VOID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the PTE template.
|
* Initializes the system's PTE.
|
||||||
*
|
*
|
||||||
* @return This routine does not return any value.
|
* @return This routine does not return any value.
|
||||||
*
|
*
|
||||||
@@ -162,9 +162,13 @@ MM::Pte::InitializePageTable(VOID)
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::Pte::InitializePteTemplate(VOID)
|
MM::Pte::InitializeSystemPte(VOID)
|
||||||
{
|
{
|
||||||
|
/* Initialize the PTE template */
|
||||||
ValidPte = {MM_PTE_VALID|MM_PTE_EXECUTE_READWRITE|MM_PTE_DIRTY|MM_PTE_ACCESSED};
|
ValidPte = {MM_PTE_VALID|MM_PTE_EXECUTE_READWRITE|MM_PTE_DIRTY|MM_PTE_ACCESSED};
|
||||||
|
|
||||||
|
/* Initialize the system's PTE list terminator */
|
||||||
|
ListTerminator = MM::Paging::GetPteListTerminator();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -97,6 +97,9 @@ MMPFNLIST MM::Pfn::ZeroedPagesList = {0, ZeroedPageList, MAXULONG_PTR, MAXULONG_
|
|||||||
/* Array of lists for available System PTEs, separated by pool type */
|
/* Array of lists for available System PTEs, separated by pool type */
|
||||||
MMPTE MM::Pte::FirstSystemFreePte[MaximumPtePoolTypes];
|
MMPTE MM::Pte::FirstSystemFreePte[MaximumPtePoolTypes];
|
||||||
|
|
||||||
|
/* PTE list terminator */
|
||||||
|
ULONG_PTR MM::Pte::ListTerminator;
|
||||||
|
|
||||||
/* Virtual base address of the System PTE space */
|
/* Virtual base address of the System PTE space */
|
||||||
PMMPTE MM::Pte::SystemPteBase;
|
PMMPTE MM::Pte::SystemPteBase;
|
||||||
|
|
||||||
|
|||||||
@@ -113,7 +113,7 @@ MM::Pte::InitializePageTable(VOID)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the PTE template.
|
* Initializes the system's PTE.
|
||||||
*
|
*
|
||||||
* @return This routine does not return any value.
|
* @return This routine does not return any value.
|
||||||
*
|
*
|
||||||
@@ -121,9 +121,13 @@ MM::Pte::InitializePageTable(VOID)
|
|||||||
*/
|
*/
|
||||||
XTAPI
|
XTAPI
|
||||||
VOID
|
VOID
|
||||||
MM::Pte::InitializePteTemplate(VOID)
|
MM::Pte::InitializeSystemPte(VOID)
|
||||||
{
|
{
|
||||||
|
/* Initialize the PTE template */
|
||||||
ValidPte = {{MM_PTE_VALID|MM_PTE_EXECUTE_READWRITE|MM_PTE_DIRTY|MM_PTE_ACCESSED}};
|
ValidPte = {{MM_PTE_VALID|MM_PTE_EXECUTE_READWRITE|MM_PTE_DIRTY|MM_PTE_ACCESSED}};
|
||||||
|
|
||||||
|
/* Initialize the system's PTE list terminator */
|
||||||
|
ListTerminator = MM::Paging::GetPteListTerminator();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ MM::Manager::InitializeMemoryManager(VOID)
|
|||||||
InitializeMemoryLayout();
|
InitializeMemoryLayout();
|
||||||
|
|
||||||
/* Initialize PTE template */
|
/* Initialize PTE template */
|
||||||
MM::Pte::InitializePteTemplate();
|
MM::Pte::InitializeSystemPte();
|
||||||
|
|
||||||
/* Initialize page table */
|
/* Initialize page table */
|
||||||
MM::Pte::InitializePageTable();
|
MM::Pte::InitializePageTable();
|
||||||
|
|||||||
Reference in New Issue
Block a user