aboutsummaryrefslogtreecommitdiff
path: root/src/idt
diff options
context:
space:
mode:
Diffstat (limited to 'src/idt')
-rw-r--r--src/idt/exception.cc8
-rw-r--r--src/idt/stubs.S2
2 files changed, 9 insertions, 1 deletions
diff --git a/src/idt/exception.cc b/src/idt/exception.cc
new file mode 100644
index 0000000..efffd95
--- /dev/null
+++ b/src/idt/exception.cc
@@ -0,0 +1,8 @@
+#include <stdlib.h>
+#include "cpu/registers.h"
+
+extern "C" void handle_exception(const cpu_state_t* r) {
+ printk("exception ", uhex{r->irq}, " error ", uhex{r->error}, "eip: ", uhex{r->eip}, '\n');
+
+ abort();
+};
diff --git a/src/idt/stubs.S b/src/idt/stubs.S
index d4fb56f..568b0dc 100644
--- a/src/idt/stubs.S
+++ b/src/idt/stubs.S
@@ -73,7 +73,7 @@ exception_common:
push %esp
call handle_exception
- mov %eax, %esp
+ add $4, %esp
popa
/* remove error code and irq from stack */