summaryrefslogtreecommitdiff
path: root/Kernel/Interrupts
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2020-05-16 10:39:06 +0200
committerAndreas Kling <kling@serenityos.org>2020-05-16 10:55:54 +0200
commit03eb0e5638b2b4f6cb1a57a3c9e77db990e07db0 (patch)
tree2039b51ec55b61e5e9a3789eca0522d146ca2a3e /Kernel/Interrupts
parent85aafe492d40a106b90238f2a231f540e8d00eba (diff)
downloadserenity-03eb0e5638b2b4f6cb1a57a3c9e77db990e07db0.zip
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.
Diffstat (limited to 'Kernel/Interrupts')
-rw-r--r--Kernel/Interrupts/APIC.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/Kernel/Interrupts/APIC.cpp b/Kernel/Interrupts/APIC.cpp
index 6eaac95583..6400e24bc4 100644
--- a/Kernel/Interrupts/APIC.cpp
+++ b/Kernel/Interrupts/APIC.cpp
@@ -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);
}
}
}