From d63b9512e7997b5ef25fbfa6e5a64584a91b2452 Mon Sep 17 00:00:00 2001 From: Matheus Date: Thu, 8 Sep 2022 17:57:23 -0300 Subject: [PATCH] apic: add option to mask or not legacy irqs --- src/arch/x86_64/apic.c | 4 ++-- src/arch/x86_64/include/arch/apic.h | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/arch/x86_64/apic.c b/src/arch/x86_64/apic.c index 99983afd..ac70f3e5 100644 --- a/src/arch/x86_64/apic.c +++ b/src/arch/x86_64/apic.c @@ -174,7 +174,7 @@ static void ioapic_writeiored(ioapic_descriptor* ioapic, uint8_t irq, uint8_t ve } -void ioapic_setlegacyirq(uint8_t irq, uint8_t vector, uint8_t proc){ +void ioapic_setlegacyirq(uint8_t irq, uint8_t vector, uint8_t proc, bool masked){ // default settings for ISA irqs @@ -201,7 +201,7 @@ void ioapic_setlegacyirq(uint8_t irq, uint8_t vector, uint8_t proc){ irq = irq - ioapic->gsi; - ioapic_writeiored(ioapic, irq, vector, 0, 0, polarity, trigger, 1, proc); + ioapic_writeiored(ioapic, irq, vector, 0, 0, polarity, trigger, masked ? 1 : 0, proc); } diff --git a/src/arch/x86_64/include/arch/apic.h b/src/arch/x86_64/include/arch/apic.h index 8d58ec81..6538e6bd 100644 --- a/src/arch/x86_64/include/arch/apic.h +++ b/src/arch/x86_64/include/arch/apic.h @@ -3,6 +3,7 @@ #include #include +#include void apic_sendipi(uint8_t cpu, uint8_t vec, uint8_t dest, uint8_t mode, uint8_t level); void apic_eoi(); @@ -12,6 +13,6 @@ void apic_timerinterruptset(uint8_t vector); size_t apic_timercalibrate(size_t us); void apic_lapicinit(); void apic_init(); -void ioapic_setlegacyirq(uint8_t irq, uint8_t vector, uint8_t proc); +void ioapic_setlegacyirq(uint8_t irq, uint8_t vector, uint8_t proc, bool masked); #endif