Initialize segments and processor registers for i686 architecture
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
2ba42c5270
commit
76f22fbdc4
@ -58,9 +58,15 @@ ArInitializeProcessor(VOID)
|
||||
/* Enter passive IRQ level */
|
||||
ProcessorBlock->Irql = PASSIVE_LEVEL;
|
||||
|
||||
/* Initialize segment registers */
|
||||
ArpInitializeSegments();
|
||||
|
||||
/* Load FS segment */
|
||||
ArLoadSegment(SEGMENT_FS, KGDT_R0_PB);
|
||||
|
||||
/* Initialize processor registers */
|
||||
ArpInitializeProcessorRegisters();
|
||||
|
||||
/* Identify processor */
|
||||
ArpIdentifyProcessor();
|
||||
}
|
||||
@ -209,6 +215,39 @@ ArpInitializeProcessorBlock(OUT PKPROCESSOR_BLOCK ProcessorBlock,
|
||||
ProcessorBlock->Prcb.ProcessorState.SpecialRegisters.KernelDr7 = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes processor registers and other boot structures.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
ArpInitializeProcessorRegisters(VOID)
|
||||
{
|
||||
/* Clear EFLAGS register */
|
||||
ArWriteEflagsRegister(0);
|
||||
|
||||
/* Enable write-protection */
|
||||
ArWriteControlRegister(0, ArReadControlRegister(0) | CR0_WP);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes segment registers.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since XT 1.0
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
ArpInitializeSegments(VOID)
|
||||
{
|
||||
ArLoadSegment(SEGMENT_DS, KGDT_R3_DATA | RPL_MASK);
|
||||
ArLoadSegment(SEGMENT_ES, KGDT_R3_DATA | RPL_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the kernel's Task State Segment (TSS).
|
||||
*
|
||||
|
@ -20,12 +20,6 @@ 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);
|
||||
|
Loading…
Reference in New Issue
Block a user