Prepare for architecture-specific paging initialization
Some checks failed
Builds / ExectOS (amd64, debug) (push) Successful in 22s
Builds / ExectOS (i686, release) (push) Failing after 21s
Builds / ExectOS (amd64, release) (push) Successful in 35s
Builds / ExectOS (i686, debug) (push) Failing after 33s

This commit is contained in:
Aiken Harris 2025-08-16 19:58:00 +02:00
parent f85fe31b38
commit 5768d4bba6
Signed by: harraiken
GPG Key ID: C40F06CB7493C1F5
9 changed files with 106 additions and 39 deletions

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -52,6 +52,9 @@ KepInitializeMachine(VOID)
/* Initialize processor */ /* Initialize processor */
HlInitializeProcessor(); HlInitializeProcessor();
/* Initialize page map support */
MmInitializePageMapSupport();
} }
/** /**

View File

@ -52,6 +52,9 @@ KepInitializeMachine(VOID)
/* Initialize processor */ /* Initialize processor */
HlInitializeProcessor(); HlInitializeProcessor();
/* Initialize page map support */
MmInitializePageMapSupport();
} }
/** /**

View File

@ -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
View 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;
}

View File

@ -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
View 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;
}