1

Initial commit

This commit is contained in:
2023-02-26 21:12:51 +01:00
commit d2ec37332f
69 changed files with 58831 additions and 0 deletions

19
code/ap_boot_usa.cpp Normal file
View File

@ -0,0 +1,19 @@
// Excerpt from the Universal Startup Algorithm
for (uint8_t cpu = 0; cpu < cpuCount; ++cpu) {
if (cpu == LocalApic::getId()) { continue; } // Skip the BSP
LocalApic::clearErrors();
LocalApic::sendInitIpi(cpu, ICREntry::Level::ASSERT);
LocalApic::waitForIpiDispatch();
LocalApic::sendInitIpi(cpu, ICREntry::Level::DEASSERT);
LocalApic::waitForIpiDispatch();
Pit::earlyDelay(10'000); // 10 milliseconds
for (uint8_t i = 0; i < 2; ++i) {
LocalApic::clearErrors();
LocalApic::sendStartupIpi(cpu, apStartupAddress);
LocalApic::waitForIpiDispatch();
Pit::earlyDelay(200); // 200 microseconds
}
while (!(runningAPs & (1 << cpu))) {} // Wait until the AP is running
}