Prepare for architecture-specific paging initialization
This commit is contained in:
parent
f85fe31b38
commit
5768d4bba6
@ -62,6 +62,7 @@ list(APPEND XTOSKRNL_SOURCE
|
|||||||
${XTOSKRNL_SOURCE_DIR}/mm/pages.c
|
${XTOSKRNL_SOURCE_DIR}/mm/pages.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/init.c
|
${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/init.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/pages.c
|
${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/pages.c
|
||||||
|
${XTOSKRNL_SOURCE_DIR}/mm/${ARCH}/pmap.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/po/idle.c
|
${XTOSKRNL_SOURCE_DIR}/po/idle.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/rtl/atomic.c
|
${XTOSKRNL_SOURCE_DIR}/rtl/atomic.c
|
||||||
${XTOSKRNL_SOURCE_DIR}/rtl/bitmap.c
|
${XTOSKRNL_SOURCE_DIR}/rtl/bitmap.c
|
||||||
|
@ -13,11 +13,19 @@
|
|||||||
|
|
||||||
|
|
||||||
/* AMD64 Memory Manager routines forward references */
|
/* AMD64 Memory Manager routines forward references */
|
||||||
|
XTAPI
|
||||||
|
VOID
|
||||||
|
MmInitializePageMapSupport(VOID);
|
||||||
|
|
||||||
XTFASTCALL
|
XTFASTCALL
|
||||||
VOID
|
VOID
|
||||||
MmZeroPages(IN PVOID Address,
|
MmZeroPages(IN PVOID Address,
|
||||||
IN ULONG Size);
|
IN ULONG Size);
|
||||||
|
|
||||||
|
XTAPI
|
||||||
|
BOOLEAN
|
||||||
|
MmpGetExtendedPhysicalAddressingStatus(VOID);
|
||||||
|
|
||||||
XTAPI
|
XTAPI
|
||||||
PMMPTE
|
PMMPTE
|
||||||
MmpGetPdeAddress(PVOID Address);
|
MmpGetPdeAddress(PVOID Address);
|
||||||
@ -38,8 +46,4 @@ XTAPI
|
|||||||
VOID
|
VOID
|
||||||
MmpInitializeArchitecture(VOID);
|
MmpInitializeArchitecture(VOID);
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpMemoryExtensionEnabled(VOID);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_AMD64_MMI_H */
|
#endif /* __XTOSKRNL_AMD64_MMI_H */
|
||||||
|
@ -13,15 +13,27 @@
|
|||||||
|
|
||||||
|
|
||||||
/* i686 Memory Manager routines forward references */
|
/* i686 Memory Manager routines forward references */
|
||||||
|
XTAPI
|
||||||
|
VOID
|
||||||
|
MmInitializePageMapSupport(VOID);
|
||||||
|
|
||||||
XTFASTCALL
|
XTFASTCALL
|
||||||
VOID
|
VOID
|
||||||
MmZeroPages(IN PVOID Address,
|
MmZeroPages(IN PVOID Address,
|
||||||
IN ULONG Size);
|
IN ULONG Size);
|
||||||
|
|
||||||
XTAPI
|
XTAPI
|
||||||
PMMPTE
|
BOOLEAN
|
||||||
|
MmpGetExtendedPhysicalAddressingStatus(VOID);
|
||||||
|
|
||||||
|
XTAPI
|
||||||
|
PMMPDE
|
||||||
MmpGetPdeAddress(PVOID Address);
|
MmpGetPdeAddress(PVOID Address);
|
||||||
|
|
||||||
|
XTAPI
|
||||||
|
PMMPPE
|
||||||
|
MmpGetPpeAddress(PVOID Address);
|
||||||
|
|
||||||
XTAPI
|
XTAPI
|
||||||
PMMPTE
|
PMMPTE
|
||||||
MmpGetPteAddress(PVOID Address);
|
MmpGetPteAddress(PVOID Address);
|
||||||
@ -30,8 +42,4 @@ XTAPI
|
|||||||
VOID
|
VOID
|
||||||
MmpInitializeArchitecture(VOID);
|
MmpInitializeArchitecture(VOID);
|
||||||
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpMemoryExtensionEnabled(VOID);
|
|
||||||
|
|
||||||
#endif /* __XTOSKRNL_I686_MMI_H */
|
#endif /* __XTOSKRNL_I686_MMI_H */
|
||||||
|
@ -52,6 +52,9 @@ KepInitializeMachine(VOID)
|
|||||||
|
|
||||||
/* Initialize processor */
|
/* Initialize processor */
|
||||||
HlInitializeProcessor();
|
HlInitializeProcessor();
|
||||||
|
|
||||||
|
/* Initialize page map support */
|
||||||
|
MmInitializePageMapSupport();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -52,6 +52,9 @@ KepInitializeMachine(VOID)
|
|||||||
|
|
||||||
/* Initialize processor */
|
/* Initialize processor */
|
||||||
HlInitializeProcessor();
|
HlInitializeProcessor();
|
||||||
|
|
||||||
|
/* Initialize page map support */
|
||||||
|
MmInitializePageMapSupport();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -9,6 +9,20 @@
|
|||||||
#include <xtos.h>
|
#include <xtos.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detects if eXtended Physical Addressing (XPA) is enabled and initializes page map support.
|
||||||
|
*
|
||||||
|
* @return This routine does not return any value.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
VOID
|
||||||
|
MmInitializePageMapSupport(VOID)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the address of the PDE (Page Directory Entry), that maps given address.
|
* Gets the address of the PDE (Page Directory Entry), that maps given address.
|
||||||
*
|
*
|
||||||
@ -102,18 +116,3 @@ MmpInitializeArchitecture(VOID)
|
|||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if LA57 (PML5) is enabled.
|
|
||||||
*
|
|
||||||
* @return This routine returns TRUE if LA57 is enabled, or FALSE otherwise.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpMemoryExtensionEnabled(VOID)
|
|
||||||
{
|
|
||||||
/* Check if LA57 (PML5) is enabled */
|
|
||||||
return ((ArReadControlRegister(4) & CR4_LA57) != 0) ? TRUE : FALSE;
|
|
||||||
}
|
|
||||||
|
25
xtoskrnl/mm/amd64/pmap.c
Normal file
25
xtoskrnl/mm/amd64/pmap.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/**
|
||||||
|
* PROJECT: ExectOS
|
||||||
|
* COPYRIGHT: See COPYING.md in the top level directory
|
||||||
|
* FILE: xtoskrnl/mm/amd64/pmap.c
|
||||||
|
* DESCRIPTION: Low-level support for AMD64 page map manipulation
|
||||||
|
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <xtos.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if eXtended Physical Addressing (XPA) is enabled.
|
||||||
|
*
|
||||||
|
* @return This routine returns TRUE if LA57 is enabled, or FALSE otherwise.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
BOOLEAN
|
||||||
|
MmpGetExtendedPhysicalAddressingStatus(VOID)
|
||||||
|
{
|
||||||
|
/* Check if LA57 is enabled */
|
||||||
|
return ((ArReadControlRegister(4) & CR4_LA57) != 0) ? TRUE : FALSE;
|
||||||
|
}
|
@ -9,6 +9,20 @@
|
|||||||
#include <xtos.h>
|
#include <xtos.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Detects if eXtended Physical Addressing (XPA) is enabled and initializes page map support.
|
||||||
|
*
|
||||||
|
* @return This routine does not return any value.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
VOID
|
||||||
|
MmInitializePageMapSupport(VOID)
|
||||||
|
{
|
||||||
|
UNIMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the address of the PDE (Page Directory Entry), that maps given address.
|
* Gets the address of the PDE (Page Directory Entry), that maps given address.
|
||||||
*
|
*
|
||||||
@ -64,18 +78,3 @@ MmpInitializeArchitecture(VOID)
|
|||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if PAE (Physical Address Extension) is enabled.
|
|
||||||
*
|
|
||||||
* @return This routine returns TRUE if PAE is enabled, or FALSE otherwise.
|
|
||||||
*
|
|
||||||
* @since XT 1.0
|
|
||||||
*/
|
|
||||||
XTAPI
|
|
||||||
BOOLEAN
|
|
||||||
MmpMemoryExtensionEnabled(VOID)
|
|
||||||
{
|
|
||||||
/* Check if PAE is enabled */
|
|
||||||
return ((ArReadControlRegister(4) & CR4_PAE) != 0) ? TRUE : FALSE;
|
|
||||||
}
|
|
||||||
|
25
xtoskrnl/mm/i686/pmap.c
Normal file
25
xtoskrnl/mm/i686/pmap.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/**
|
||||||
|
* PROJECT: ExectOS
|
||||||
|
* COPYRIGHT: See COPYING.md in the top level directory
|
||||||
|
* FILE: xtoskrnl/mm/i686/pmap.c
|
||||||
|
* DESCRIPTION: Low-level support for i686 page map manipulation
|
||||||
|
* DEVELOPERS: Aiken Harris <harraiken91@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <xtos.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if eXtended Physical Addressing (XPA) is enabled.
|
||||||
|
*
|
||||||
|
* @return This routine returns TRUE if PAE is enabled, or FALSE otherwise.
|
||||||
|
*
|
||||||
|
* @since XT 1.0
|
||||||
|
*/
|
||||||
|
XTAPI
|
||||||
|
BOOLEAN
|
||||||
|
MmpGetExtendedPhysicalAddressingStatus(VOID)
|
||||||
|
{
|
||||||
|
/* Check if PAE is enabled */
|
||||||
|
return ((ArReadControlRegister(4) & CR4_PAE) != 0) ? TRUE : FALSE;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user