#include SOC_HEADER #include "panic.h" #include "uart.h" #include "trapped_funcs.h" #include static void dump_registers(struct pt_regs *pt_regs, unsigned int esr) { uint64_t reg; #define PUT_PT_REG(reg) do { \ uart_puts(SOC_UART0, "\nx" #reg ": "); \ uart_hexval(SOC_UART0, pt_regs->regs[reg]); \ } while (0) uart_puts(SOC_UART0, "\nelr: "); uart_hexval(SOC_UART0, pt_regs->elr); uart_puts(SOC_UART0, "\nesr: "); uart_hexval(SOC_UART0, esr); uart_puts(SOC_UART0, "\nfar: "); asm volatile("mrs %0, far_el2" : "=r" (reg) : : "cc"); uart_hexval(SOC_UART0, reg); uart_puts(SOC_UART0, "\nhpfar: "); asm volatile("mrs %0, hpfar_el2" : "=r" (reg) : : "cc"); uart_hexval(SOC_UART0, reg); PUT_PT_REG(0); PUT_PT_REG(1); PUT_PT_REG(2); PUT_PT_REG(3); PUT_PT_REG(4); PUT_PT_REG(5); PUT_PT_REG(6); PUT_PT_REG(7); PUT_PT_REG(8); PUT_PT_REG(9); PUT_PT_REG(10); PUT_PT_REG(11); PUT_PT_REG(12); PUT_PT_REG(13); PUT_PT_REG(14); PUT_PT_REG(15); PUT_PT_REG(16); PUT_PT_REG(17); PUT_PT_REG(18); PUT_PT_REG(19); PUT_PT_REG(20); PUT_PT_REG(21); PUT_PT_REG(22); PUT_PT_REG(23); PUT_PT_REG(24); PUT_PT_REG(25); PUT_PT_REG(26); PUT_PT_REG(27); PUT_PT_REG(28); PUT_PT_REG(29); PUT_PT_REG(30); uart_puts(SOC_UART0, "\n"); #undef PUT_PT_REG } void do_sync() { panic(__func__); } void do_irq() { panic(__func__); } void do_fiq() { panic(__func__); } void do_error() { panic(__func__); } void do_bad_sync() { panic(__func__); } void do_bad_irq() { panic(__func__); } void do_bad_fiq() { panic(__func__); } void do_bad_error() { panic(__func__); } void do_low_sync(struct pt_regs *pt_regs, unsigned int esr) { if (!process_low_sync(pt_regs, esr)) { dump_registers(pt_regs, esr); panic(__func__); } } void do_low_irq() { panic(__func__); } void do_low_fiq() { panic(__func__); } void do_low_error() { panic(__func__); }