diff --git a/kernel/hal/x86_64/intr.c b/kernel/hal/x86_64/intr.c index 523af17..998ca76 100644 --- a/kernel/hal/x86_64/intr.c +++ b/kernel/hal/x86_64/intr.c @@ -217,12 +217,14 @@ void intr_handleintr(IntrStackFrame *frame) { kprintf("ERROR %s, 0x%lX\n", exceptions[frame->trapnum], frame->errnum); intr_dumpframe(frame); backtrace((BackTraceFrame *)frame->regs.rbp); - if (hal_vmm_current_cr3() != KERNEL_CR3) { + if (frame->cs == UCODE) { kprintf("killed pid %ld %s\n", PROCS.current->pid, PROCS.current->name); proc_killself(); proc_sched((void *)frame); + } else { + kprintf("Kernel error :(\n"); + hal_hang(); } - hal_hang(); } else if (frame->trapnum >= 32 && frame->trapnum <= 47) { switch (frame->trapnum) { case INTR_IRQBASE+0: