1
0
Fork 0

feat/kernel: Added I/O APIC support

This commit is contained in:
Kevin Alavik 2025-06-01 12:52:41 +02:00
parent 03cc8ff8de
commit f81181ea9c
Signed by: cmpsb
GPG key ID: 10D1CC0526FDC6D7
9 changed files with 141 additions and 43 deletions

View file

@ -10,9 +10,9 @@
#define LAPIC_REG_SIZE 4
atomic_uintptr_t lapic_msr = 0;
atomic_uintptr_t lapic_base_atomic = 0;
atomic_uintptr_t lapic_base = 0;
#define LAPIC_BASE ((volatile uint32_t *)atomic_load(&lapic_base_atomic))
#define LAPIC_BASE ((volatile uint32_t *)atomic_load(&lapic_base))
void lapic_write(uint32_t offset, uint32_t value)
{
@ -65,10 +65,15 @@ void lapic_init(void)
kpanic(NULL, "LAPIC mapping failed");
}
atomic_store(&lapic_base_atomic, virt_addr);
atomic_store(&lapic_base, virt_addr);
atomic_store(&lapic_addr, virt_addr);
}
void lapic_eoi(void)
{
lapic_write(LAPIC_EOI, 0);
}
void lapic_enable(void)
{
volatile uint32_t *base = LAPIC_BASE;