1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:48:11 +00:00

Kernel: Let's say that IO::delay(N) delays for N microseconds

Supposedly that's how much delay you get when doing I/O on port 0x80.
This commit is contained in:
Andreas Kling 2020-05-16 10:39:06 +02:00
parent 85aafe492d
commit 03eb0e5638
3 changed files with 5 additions and 11 deletions

View file

@ -215,20 +215,16 @@ void enable(u32 cpu)
write_register(APIC_REG_TPR, 0);
if (cpu != 0) {
static volatile u32 foo = 0;
// INIT
write_icr(ICRReg(0, ICRReg::INIT, ICRReg::Physical, ICRReg::Assert, ICRReg::TriggerMode::Edge, ICRReg::AllExcludingSelf));
for (foo = 0; foo < 0x800000; foo++)
; // TODO: 10 millisecond delay
IO::delay(10 * 1000);
for (int i = 0; i < 2; i++) {
// SIPI
write_icr(ICRReg(0x08, ICRReg::StartUp, ICRReg::Physical, ICRReg::Assert, ICRReg::TriggerMode::Edge, ICRReg::AllExcludingSelf)); // start execution at P8000
for (foo = 0; foo < 0x80000; foo++)
; // TODO: 200 microsecond delay
IO::delay(200);
}
}
}