diff --git a/Architecture/amd64/cpu/AdvancedProgrammableInterruptController.cpp b/Architecture/amd64/cpu/AdvancedProgrammableInterruptController.cpp index 28f2f16..c454d1c 100644 --- a/Architecture/amd64/cpu/AdvancedProgrammableInterruptController.cpp +++ b/Architecture/amd64/cpu/AdvancedProgrammableInterruptController.cpp @@ -49,7 +49,8 @@ namespace APIC void APIC::Write(uint32_t Register, uint32_t Value) { - debug("APIC::Write(%#lx, %#lx)", Register, Value); + if (Register != APIC_EOI) + debug("APIC::Write(%#lx, %#lx)", Register, Value); if (x2APICSupported) { if (Register != APIC_ICRHI) @@ -216,7 +217,7 @@ namespace APIC void Timer::OnInterruptReceived(CPU::x64::TrapFrame *Frame) { - fixme("APIC IRQ0 INTERRUPT RECEIVED ON CPU %d", CPU::x64::rdmsr(CPU::x64::MSR_FS_BASE)); + // fixme("APIC IRQ0 INTERRUPT RECEIVED ON CPU %d", CPU::x64::rdmsr(CPU::x64::MSR_FS_BASE)); } Timer::Timer(APIC *apic) : Interrupts::Handler(CPU::x64::IRQ0) diff --git a/Architecture/amd64/cpu/SymmetricMultiprocessing.cpp b/Architecture/amd64/cpu/SymmetricMultiprocessing.cpp index e14e48c..d06684f 100644 --- a/Architecture/amd64/cpu/SymmetricMultiprocessing.cpp +++ b/Architecture/amd64/cpu/SymmetricMultiprocessing.cpp @@ -72,7 +72,7 @@ extern "C" void StartCPU() CPU::Interrupts(CPU::Enable); KPrint("CPU %d is online", CPU_ID); CPUEnabled = true; - CPU::Stop(); + CPU::Stop(); // Stop and surpress interrupts. } namespace SMP diff --git a/Core/Debugger.cpp b/Core/Debugger.cpp index 34d14d6..ae128fc 100644 --- a/Core/Debugger.cpp +++ b/Core/Debugger.cpp @@ -2,6 +2,9 @@ #include #include +#include + +NEWLOCK(DebuggerLock); using namespace UniversalAsynchronousReceiverTransmitter; @@ -54,6 +57,7 @@ namespace SysDbg void WriteLine(DebugLevel Level, const char *File, int Line, const char *Function, const char *Format, ...) { + SMARTLOCK(DebuggerLock); WritePrefix(Level, File, Line, Function); va_list args; va_start(args, Format);