forked from xt-sys/exectos
Architecture specific initialization prior to processor structures initialization
This commit is contained in:
@@ -20,6 +20,21 @@ XTAPI
|
||||
VOID
|
||||
KepArchInitialize(VOID)
|
||||
{
|
||||
/* Enable global paging support */
|
||||
ArWriteControlRegister(4, ArReadControlRegister(4) | CR4_PGE);
|
||||
|
||||
/* Enable write-protection */
|
||||
ArWriteControlRegister(0, ArReadControlRegister(0) | CR0_WP);
|
||||
|
||||
/* Set alignment mask */
|
||||
ArWriteControlRegister(0, ArReadControlRegister(0) | CR0_AM);
|
||||
|
||||
/* Re-enable IDE interrupts */
|
||||
HlIoPortOutByte(0x376, 0);
|
||||
HlIoPortOutByte(0x3F6, 0);
|
||||
|
||||
/* Set system call extensions (SCE) flag in EFER MSR */
|
||||
ArWriteModelSpecificRegister(X86_MSR_EFER, ArReadModelSpecificRegister(X86_MSR_EFER) | X86_MSR_EFER_SCE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -20,6 +20,15 @@ XTAPI
|
||||
VOID
|
||||
KepArchInitialize(VOID)
|
||||
{
|
||||
/* Clear EFLAGS register */
|
||||
ArWriteEflagsRegister(0);
|
||||
|
||||
/* Enable write-protection */
|
||||
ArWriteControlRegister(0, ArReadControlRegister(0) | CR0_WP);
|
||||
|
||||
/* Re-enable IDE interrupts */
|
||||
HlIoPortOutByte(0x376, 0);
|
||||
HlIoPortOutByte(0x3F6, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -49,12 +49,12 @@ KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters)
|
||||
/* Initialize kernel stacks */
|
||||
KepInitializeStack(Parameters);
|
||||
|
||||
/* Initialize boot CPU */
|
||||
ArInitializeProcessor();
|
||||
|
||||
/* Architecture specific initialization */
|
||||
KepArchInitialize();
|
||||
|
||||
/* Initialize boot CPU */
|
||||
ArInitializeProcessor();
|
||||
|
||||
/* Switch boot stack alligning it to 4 byte boundary */
|
||||
KepSwitchBootStack(KeInitializationBlock->KernelBootStack & ~0x3);
|
||||
}
|
||||
|
Reference in New Issue
Block a user