From 747c2a4e17100f9ce80643bbc72d2e247da04f94 Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Thu, 18 May 2023 10:43:45 -0700 Subject: [PATCH] Add a page fault handler --- zion/interrupt/interrupt.cpp | 4 ++++ zion/interrupt/interrupt_enter.s | 1 + 2 files changed, 5 insertions(+) diff --git a/zion/interrupt/interrupt.cpp b/zion/interrupt/interrupt.cpp index 06cc771..042721d 100644 --- a/zion/interrupt/interrupt.cpp +++ b/zion/interrupt/interrupt.cpp @@ -44,9 +44,13 @@ extern "C" void interrupt_divide_by_zero(void* frame) { panic("DIV0"); } extern "C" void isr_protection_fault(); extern "C" void interrupt_protection_fault(void* frame) { panic("GP"); } +extern "C" void isr_page_fault(); +extern "C" void interrupt_page_fault(void* frame) { panic("PF"); } + void InitIdt() { gIdt[0] = CreateDescriptor(isr_divide_by_zero); gIdt[13] = CreateDescriptor(isr_protection_fault); + gIdt[14] = CreateDescriptor(isr_page_fault); InterruptDescriptorTablePointer idtp{ .size = sizeof(gIdt), .base = reinterpret_cast(gIdt), diff --git a/zion/interrupt/interrupt_enter.s b/zion/interrupt/interrupt_enter.s index f2563e4..92b41a6 100644 --- a/zion/interrupt/interrupt_enter.s +++ b/zion/interrupt/interrupt_enter.s @@ -54,3 +54,4 @@ isr_\name: isr_handler divide_by_zero isr_handler protection_fault,1 +isr_handler page_fault,1