diff --git a/arch/x86_64/acpi/io_apic.cpp b/arch/x86_64/acpi/io_apic.cpp index 842e2fc..f61be00 100644 --- a/arch/x86_64/acpi/io_apic.cpp +++ b/arch/x86_64/acpi/io_apic.cpp @@ -49,16 +49,16 @@ void io_apic::write_irq(unsigned int index, const irq_entry &entry) write(IOAPICREDTBL(index) + 1, entry_data[1]); } -void io_apic::map_irq(unsigned int src, unsigned int dest) +void io_apic::map_irq(unsigned int src, unsigned int dest, unsigned int dest_cpu) { io_apic::irq_entry irq{}; irq.irq_vec = dest; + irq.irq_dest = dest_cpu; irq.irq_delivery = 0; irq.irq_destmode = 0; irq.irq_polarity = 0; irq.irq_triggermode = 0; irq.irq_mask = 0; - irq.irq_dest = 0; write_irq(src, irq); } diff --git a/arch/x86_64/include/arch/acpi/io_apic.hpp b/arch/x86_64/include/arch/acpi/io_apic.hpp index 056882b..cfbd4fc 100644 --- a/arch/x86_64/include/arch/acpi/io_apic.hpp +++ b/arch/x86_64/include/arch/acpi/io_apic.hpp @@ -32,7 +32,7 @@ namespace arch::acpi { kern_status_t read_irq(unsigned int index, irq_entry &entry); void write_irq(unsigned int index, const irq_entry &entry); - void map_irq(unsigned int src, unsigned int dest); + void map_irq(unsigned int src, unsigned int dest, unsigned int dest_cpu = 0); void mask_irq(unsigned int vec); void unmask_irq(unsigned int vec, unsigned int dest_cpu = (unsigned int)-1); };