From 10d006eb90020e310f66a89e73c15a4a5530287b Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 13 Mar 2016 19:18:55 -0400 Subject: [PATCH] Move exception dispatch to InterruptHandler --- src/Interrupts.cc | 51 +++++++++++++++++++++++++++-------------------- src/Interrupts.hh | 1 + 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/Interrupts.cc b/src/Interrupts.cc index 82fe545..97c5e12 100644 --- a/src/Interrupts.cc +++ b/src/Interrupts.cc @@ -84,6 +84,34 @@ InterruptHandler::disableInterrupts() } +void +InterruptHandler::dispatchException(uint8_t exception) +{ + using x86::Interrupt; + + auto& console = kernel::Console::systemConsole(); + console.printString("Received exception "); + switch (Interrupt(exception)) { + case Interrupt::DE: + console.printString("#DE"); + break; + case Interrupt::NMI: + console.printString("NMI"); + break; + case Interrupt::DF: + console.printString("#DF"); + break; + case Interrupt::GP: + console.printString("#GP"); + break; + default: + console.printString("SOME OTHER THING"); + break; + } + console.printString("\nAbort. :("); +} + + void InterruptHandler::dispatchHardwareInterrupt(uint8_t irq) { @@ -150,28 +178,7 @@ extern "C" void dispatchExceptionHandler(size_t vector) { - using x86::Interrupt; - - auto& console = kernel::Console::systemConsole(); - console.printString("Received exception "); - switch (Interrupt(vector)) { - case Interrupt::DE: - console.printString("#DE"); - break; - case Interrupt::NMI: - console.printString("NMI"); - break; - case Interrupt::DF: - console.printString("#DF"); - break; - case Interrupt::GP: - console.printString("#GP"); - break; - default: - console.printString("SOME OTHER THING"); - break; - } - console.printString("\nAbort. :("); + x86::InterruptHandler::systemInterruptHandler().dispatchException(vector); } diff --git a/src/Interrupts.hh b/src/Interrupts.hh index 897a054..c7d671a 100644 --- a/src/Interrupts.hh +++ b/src/Interrupts.hh @@ -55,6 +55,7 @@ struct InterruptHandler void enableInterrupts() const; void disableInterrupts() const; + void dispatchException(uint8_t exception); void dispatchHardwareInterrupt(uint8_t irq); private: