Extend AP bootstrap code
All checks were successful
Builds / ExectOS (amd64, debug) (push) Successful in 36s
Builds / ExectOS (i686, release) (push) Successful in 41s
Builds / ExectOS (amd64, release) (push) Successful in 44s
Builds / ExectOS (i686, debug) (push) Successful in 34s

This commit is contained in:
2026-05-19 12:40:23 +02:00
parent 6e4f0ba6e4
commit fe2e78f3c7
2 changed files with 32 additions and 8 deletions

View File

@@ -25,11 +25,14 @@ XTAPI
VOID
KE::KernelInit::BootstrapApplicationProcessor(IN PPROCESSOR_START_BLOCK StartBlock)
{
PKPROCESSOR_BLOCK ProcessorBlock;
PKPROCESSOR_CONTROL_BLOCK ControlBlock;
/* Initialize application CPU */
AR::ProcessorSupport::InitializeProcessor(StartBlock->ProcessorStructures);
/* Get processor control block */
ControlBlock = KE::Processor::GetCurrentProcessorControlBlock();
/* Initialize processor */
HL::Cpu::InitializeProcessor();
@@ -39,12 +42,21 @@ KE::KernelInit::BootstrapApplicationProcessor(IN PPROCESSOR_START_BLOCK StartBlo
/* Mark processor as started */
StartBlock->Started = TRUE;
/* Get current processor block */
ProcessorBlock = KE::Processor::GetCurrentProcessorBlock();
/* Initialize CPU power state structures */
PO::Idle::InitializeProcessorIdleState(ControlBlock);
/* Save processor state */
KE::Processor::SaveProcessorState(&ControlBlock->ProcessorState);
/* Lower to APC runlevel */
KE::RunLevel::LowerRunLevel(APC_LEVEL);
/* Initialize local clock for this CPU */
HL::Timer::InitializeLocalClock();
/* Enter infinite loop */
DebugPrint(L"KernelInit::BootstrapApplicationProcessor() finished for CPU #%lu. Entering infinite loop.\n",
ProcessorBlock->CpuNumber);
ControlBlock->CpuNumber);
KE::Crash::HaltSystem();
}

View File

@@ -25,11 +25,14 @@ XTAPI
VOID
KE::KernelInit::BootstrapApplicationProcessor(IN PPROCESSOR_START_BLOCK StartBlock)
{
PKPROCESSOR_BLOCK ProcessorBlock;
PKPROCESSOR_CONTROL_BLOCK ControlBlock;
/* Initialize application CPU */
AR::ProcessorSupport::InitializeProcessor(StartBlock->ProcessorStructures);
/* Get processor control block */
ControlBlock = KE::Processor::GetCurrentProcessorControlBlock();
/* Initialize processor */
HL::Cpu::InitializeProcessor();
@@ -39,12 +42,21 @@ KE::KernelInit::BootstrapApplicationProcessor(IN PPROCESSOR_START_BLOCK StartBlo
/* Mark processor as started */
StartBlock->Started = TRUE;
/* Get current processor block */
ProcessorBlock = KE::Processor::GetCurrentProcessorBlock();
/* Initialize CPU power state structures */
PO::Idle::InitializeProcessorIdleState(ControlBlock);
/* Save processor state */
KE::Processor::SaveProcessorState(&ControlBlock->ProcessorState);
/* Lower to APC runlevel */
KE::RunLevel::LowerRunLevel(APC_LEVEL);
/* Initialize local clock for this CPU */
HL::Timer::InitializeLocalClock();
/* Enter infinite loop */
DebugPrint(L"KernelInit::BootstrapApplicationProcessor() finished for CPU #%lu. Entering infinite loop.\n",
ProcessorBlock->CpuNumber);
ControlBlock->CpuNumber);
KE::Crash::HaltSystem();
}