APIC interrupts working

This commit is contained in:
Alex 2022-10-17 18:11:39 +03:00
parent d5447c288e
commit 4ca5db1fee
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
3 changed files with 8 additions and 3 deletions

View File

@ -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)

View File

@ -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

View File

@ -2,6 +2,9 @@
#include <uart.hpp>
#include <printf.h>
#include <lock.hpp>
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);