This commit is contained in:
Kevin Lange 2011-02-13 02:39:27 -06:00
parent 0da56e6e51
commit d42b2168c4
2 changed files with 40 additions and 35 deletions

View File

@ -92,38 +92,38 @@ isrs_install() {
}
char *exception_messages[] = {
"division by zero",
"debug",
"non-maskable interrupt",
"breakpoint",
"detected overflow",
"out-of-bounds",
"invalid opcode",
"no coprocessor",
"double fault",
"coprocessor segment overrun",
"bad TSS",
"segment not present",
"stack fault",
"general protection fault",
"page fault",
"unknown interrupt",
"coprocessor fault",
"alignment check",
"machine check",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved",
"reserved"
"Division by zero",
"Debug",
"Non-maskable interrupt",
"Breakpoint",
"Detected overflow",
"Out-of-bounds",
"Invalid opcode",
"No coprocessor",
"Double fault",
"Coprocessor segment overrun",
"Bad TSS",
"Segment not present",
"Stack fault",
"General protection fault",
"Page fault",
"Unknown interrupt",
"Coprocessor fault",
"Alignment check",
"Machine check",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved"
};
void fault_handler(struct regs *r) {
@ -133,9 +133,9 @@ void fault_handler(struct regs *r) {
if (handler) {
handler(r);
} else {
kprintf("%s exception encountered.\n", exception_messages[r->int_no]);
puts(exception_messages[r->int_no]);
HALT_AND_CATCH_FIRE("System halted.");
settextcolor(14,4);
kprintf("Unhandled exception: %s\n", exception_messages[r->int_no]);
HALT_AND_CATCH_FIRE("System halted - unhandled exception");
}
}
}

View File

@ -184,6 +184,11 @@ start_shell() {
serial_send('\n');
writech('\n');
}
} else if (!strcmp(cmd, "crash")) {
kprintf("Going to dereference some invalid pointers.\n");
int i = 0xFFFFFFFF;
int j = *(int *)i;
j = 0xDEADBEEF;
} else {
kprintf("Unrecognized command: %s\n", cmd);
}