acpi: add APIC irq ack and legacy vector remapping
This commit is contained in:
25
arch/x86_64/acpi/local_apic.cpp
Normal file
25
arch/x86_64/acpi/local_apic.cpp
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user