From 2ae3846b1798b0ce917b6daa820cdfec71062abb Mon Sep 17 00:00:00 2001 From: Matheus Date: Sun, 25 Jun 2023 15:40:42 -0300 Subject: [PATCH] interrupt (x86_64): switch out _cpu()->ipl initialization from apic.c to idt.c --- kernel-src/arch/x86-64/apic.c | 1 - kernel-src/arch/x86-64/idt.c | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel-src/arch/x86-64/apic.c b/kernel-src/arch/x86-64/apic.c index be8e0c8d..5ebb77f3 100644 --- a/kernel-src/arch/x86-64/apic.c +++ b/kernel-src/arch/x86-64/apic.c @@ -227,7 +227,6 @@ void arch_apic_initap() { writelapic(APIC_LVT_LINT0 + 0x10 * current->lint, (nmiisr->id & 0xff) | LVT_DELIVERY_NMI | (current->flags << 12)); } - _cpu()->ipl = IPL_NORMAL; interrupt_set(true); } diff --git a/kernel-src/arch/x86-64/idt.c b/kernel-src/arch/x86-64/idt.c index d343d6bc..6c88b12a 100644 --- a/kernel-src/arch/x86-64/idt.c +++ b/kernel-src/arch/x86-64/idt.c @@ -5,6 +5,7 @@ #include #include #include +#include typedef struct { uint16_t size; @@ -79,6 +80,8 @@ void arch_idt_reload() { // make sure to reserve the first 32 isrs for exceptions with a dummy panic isr for (int i = 0; i < 32; ++i) interrupt_register(i, exceptisr, NULL, IPL_MAX); + + _cpu()->ipl = IPL_NORMAL; } void arch_interrupt_disable() {