cleanup
This commit is contained in:
+4
-2
@@ -12,6 +12,7 @@
|
||||
#include <x86_64/apic.h>
|
||||
#include <x86_64/defs.h>
|
||||
#include <x86_64/gdt.h>
|
||||
#include <x86_64/percpu.h>
|
||||
|
||||
struct [[__packed]] idt_entry {
|
||||
uint16_t base0;
|
||||
@@ -34,6 +35,7 @@ static_assert(sizeof(struct idtr) == 10);
|
||||
|
||||
void interrupt_handler(struct arch_context* ctx) {
|
||||
struct percpu* cpu = percpu_get();
|
||||
struct arch_percpu* arch_cpu = percpu_ref(arch_data);
|
||||
bool old = irq_set_interrupted(true);
|
||||
|
||||
uint64_t isr = ctx->isr;
|
||||
@@ -46,12 +48,12 @@ void interrupt_handler(struct arch_context* ctx) {
|
||||
case IDT_IPI_RESCHED:
|
||||
arch_sched_preempt_disable();
|
||||
if (arch_sched_preempt_enable()) {
|
||||
lapic_eoi(&cpu->arch.lapic);
|
||||
lapic_eoi(&arch_cpu->lapic);
|
||||
sched_reschedule(&cpu->sched);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
struct irq_line* line = cpu->arch.irq_lines[isr - 0x20];
|
||||
struct irq_line* line = arch_cpu->irq_lines[isr - 0x20];
|
||||
assert(line, "Unhandled interrupt on ISR %lu\n", isr);
|
||||
// TODO: irq_raise(line);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user