Stage2: Add exception handlers

This commit is contained in:
TuxSH
2018-05-21 03:50:53 +02:00
parent c1687905a3
commit bf2c6dff25
5 changed files with 195 additions and 5 deletions

View File

@@ -1,3 +1,5 @@
#include <inttypes.h>
#include "exception_handlers.h"
#include "lib/driver_utils.h"
#include "utils.h"
@@ -37,7 +39,7 @@ void exception_handler_main(uint32_t *registers, unsigned int exception_type) {
uint32_t instr_addr = pc + ((cpsr & 0x20) ? 2 : 4) - CODE_DUMP_SIZE;
printk("Something went wrong...\n");
printk("\nSomething went wrong...\n");
code_dump_size = safecpy(code_dump, (const void *)instr_addr, CODE_DUMP_SIZE);
stack_dump_size = safecpy(stack_dump, (const void *)registers[13], STACK_DUMP_SIZE);
@@ -47,11 +49,11 @@ void exception_handler_main(uint32_t *registers, unsigned int exception_type) {
/* Print r0 to pc. */
for (int i = 0; i < 16; i += 2) {
printk("%-7s%08X %-7s%08X\n", register_names[i], registers[i], register_names[i+1], registers[i+1]);
printk("%-7s%08"PRIX32" %-7s%08"PRIX32"\n", register_names[i], registers[i], register_names[i+1], registers[i+1]);
}
/* Print cpsr. */
printk("%-7s%08X\n", register_names[16], registers[16]);
printk("%-7s%08"PRIX32"\n", register_names[16], registers[16]);
printk("\nCode dump:\n");
hexdump(code_dump, code_dump_size, instr_addr);