Make ExectOS only run on processors which support PAE
All checks were successful
Builds / ExectOS (amd64) (push) Successful in 55s
Builds / ExectOS (i686) (push) Successful in 53s

This commit is contained in:
Rafal Kupiec 2024-05-24 16:30:39 +02:00
parent 5221db2e63
commit b4588d5b4c
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4
5 changed files with 9 additions and 50 deletions

View File

@ -20,16 +20,13 @@
/* Page directory and page base addresses */ /* Page directory and page base addresses */
#define MM_PTE_BASE 0xC0000000 #define MM_PTE_BASE 0xC0000000
#define MM_PDE_BASE 0xC0300000 #define MM_PDE_BASE 0xC0600000
#define MM_PDE_PAE_BASE 0xC0600000
/* PTE shift values */ /* PTE shift values */
#define MM_PTE_SHIFT 2 #define MM_PTE_SHIFT 3
#define MM_PTI_SHIFT 12 #define MM_PTI_SHIFT 12
#define MM_PDI_SHIFT 22 #define MM_PDI_SHIFT 21
#define MM_PTE_PAE_SHIFT 3 #define MM_PPI_SHIFT 30
#define MM_PDI_PAE_SHIFT 21
#define MM_PPI_PAE_SHIFT 30
/* Minimum number of physical pages needed by the system */ /* Minimum number of physical pages needed by the system */
#define MM_MINIMUM_PHYSICAL_PAGES 1100 #define MM_MINIMUM_PHYSICAL_PAGES 1100

View File

@ -20,8 +20,6 @@ XTAPI
VOID VOID
KepInitializeKernel(VOID) KepInitializeKernel(VOID)
{ {
/* Initialize architecture specific hardware extensions */
MmInitializeHardware();
} }
/** /**

View File

@ -20,8 +20,6 @@ XTAPI
VOID VOID
KepInitializeKernel(VOID) KepInitializeKernel(VOID)
{ {
/* Initialize architecture specific hardware extensions */
MmInitializeHardware();
} }
/** /**

View File

@ -23,27 +23,11 @@ XTAPI
PMMPTE PMMPTE
MmpGetPdeAddress(PVOID Address) MmpGetPdeAddress(PVOID Address)
{ {
ULONG Offset, PdeBase, PdiShift, PteShift; ULONG Offset;
/* Get PDI and PTE shifts based on memory extension flag */
if(MmpMemoryExtension)
{
/* Get bit shifts for PAE system */
PdeBase = MM_PDE_PAE_BASE;
PdiShift = MM_PDI_PAE_SHIFT;
PteShift = MM_PTE_PAE_SHIFT;
}
else
{
/* Get bit shifts for non-PAE system */
PdeBase = MM_PDE_BASE;
PdiShift = MM_PDI_SHIFT;
PteShift = MM_PTE_SHIFT;
}
/* Calculate offset and return PTE address */ /* Calculate offset and return PTE address */
Offset = ((((ULONG)(Address)) >> PdiShift) << PteShift); Offset = ((((ULONG)(Address)) >> MM_PDI_SHIFT) << MM_PTE_SHIFT);
return (PMMPTE)(PdeBase + Offset); return (PMMPTE)(MM_PDE_BASE + Offset);
} }
/** /**
@ -60,13 +44,10 @@ XTAPI
PMMPTE PMMPTE
MmpGetPteAddress(PVOID Address) MmpGetPteAddress(PVOID Address)
{ {
ULONG Offset, PteShift; ULONG Offset;
/* Get PTE shift based on memory extension flag */
PteShift = MmpMemoryExtension ? MM_PTE_PAE_SHIFT : MM_PTE_SHIFT;
/* Calculate offset and return PTE address */ /* Calculate offset and return PTE address */
Offset = ((((ULONG)(Address)) >> MM_PTI_SHIFT) << PteShift); Offset = ((((ULONG)(Address)) >> MM_PTI_SHIFT) << MM_PTE_SHIFT);
return (PMMPTE)(MM_PTE_BASE + Offset); return (PMMPTE)(MM_PTE_BASE + Offset);
} }

View File

@ -9,21 +9,6 @@
#include <xtos.h> #include <xtos.h>
/**
* Performs an early pre-initialization of hardware-related structures.
*
* @return This routine does not return any value.
*
* @since XT 1.0
*/
XTAPI
VOID
MmInitializeHardware(VOID)
{
/* Check for architecture-specific memory extensions enabled by the firmware or boot loader */
MmpMemoryExtension = MmpMemoryExtensionEnabled();
}
/** /**
* Performs an early initialization of the XTOS Memory Manager. * Performs an early initialization of the XTOS Memory Manager.
* *