X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/474a5dd282586c31abfefc7953f148acdc226731..bf870a1dde437a48ae40d092a14e164c861ea102:/lunaix-os/hal/ioapic.c diff --git a/lunaix-os/hal/ioapic.c b/lunaix-os/hal/ioapic.c index dbe9106..5a03eff 100644 --- a/lunaix-os/hal/ioapic.c +++ b/lunaix-os/hal/ioapic.c @@ -2,9 +2,12 @@ #include #include #include +#include -#define IOAPIC_REG_SEL *((volatile uint32_t*)(MMIO_IOAPIC + IOAPIC_IOREGSEL)) -#define IOAPIC_REG_WIN *((volatile uint32_t*)(MMIO_IOAPIC + IOAPIC_IOWIN)) +#define IOAPIC_REG_SEL *((volatile uint32_t*)(_ioapic_base + IOAPIC_IOREGSEL)) +#define IOAPIC_REG_WIN *((volatile uint32_t*)(_ioapic_base + IOAPIC_IOWIN)) + +static volatile uintptr_t _ioapic_base; uint8_t ioapic_get_irq(acpi_context* acpi_ctx, uint8_t old_irq); @@ -16,6 +19,8 @@ ioapic_init() acpi_context* acpi_ctx = acpi_get_context(); + _ioapic_base = ioremap(acpi_ctx->madt.ioapic->ioapic_addr & ~0xfff, 4096); + // Remap the IRQ 8 (rtc timer's vector) to RTC_TIMER_IV in ioapic // (Remarks IRQ 8 is pin INTIN8) // See IBM PC/AT Technical Reference 1-10 for old RTC IRQ