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: