acpi: add APIC irq ack and legacy vector remapping

This commit is contained in:
2023-03-24 14:21:02 +00:00
parent cb622f5ad4
commit 864362ba82
11 changed files with 286 additions and 49 deletions

View File

@@ -0,0 +1,25 @@
#include <arch/acpi/local_apic.hpp>
#include <socks/vm.h>
#define LAPIC_REG_EOI 0xB0
namespace arch::acpi {
local_apic::local_apic(uint32_t *base) : base_(base)
{
}
uint32_t local_apic::read(uint32_t reg)
{
return *(volatile uint32_t *)((char *)base_ + reg);
}
void local_apic::write(uint32_t reg, uint32_t val)
{
*(volatile uint32_t *)((char *)base_ + reg) = val;
}
void local_apic::ack()
{
*(volatile uint32_t *)((char *)base_ + LAPIC_REG_EOI) = 0;
}
}