/* * (C) Copyright 2013 * David Feng * * SPDX-License-Identifier: GPL-2.0+ */ #include #include int interrupt_init(void) { return 0; } void enable_interrupts(void) { return; } int disable_interrupts(void) { return 0; } void show_regs(struct pt_regs *regs) { int i; printf("ELR: %lx\n", regs->elr); printf("LR: %lx\n", regs->regs[30]); for (i = 0; i < 29; i += 2) printf("x%-2d: %016lx x%-2d: %016lx\n", i, regs->regs[i], i+1, regs->regs[i+1]); printf("\n"); } /* * do_bad_sync handles the impossible case in the Synchronous Abort vector. */ void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr) { printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08x\n", esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); } /* * do_bad_irq handles the impossible case in the Irq vector. */ void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr) { printf("Bad mode in \"Irq\" handler, esr 0x%08x\n", esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); } /* * do_bad_fiq handles the impossible case in the Fiq vector. */ void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr) { printf("Bad mode in \"Fiq\" handler, esr 0x%08x\n", esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); } /* * do_bad_error handles the impossible case in the Error vector. */ void do_bad_error(struct pt_regs *pt_regs, unsigned int esr) { printf("Bad mode in \"Error\" handler, esr 0x%08x\n", esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); } /* * do_sync handles the Synchronous Abort exception. */ void do_sync(struct pt_regs *pt_regs, unsigned int esr) { printf("\"Synchronous Abort\" handler, esr 0x%08x\n", esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); } /* * do_irq handles the Irq exception. */ void do_irq(struct pt_regs *pt_regs, unsigned int esr) { printf("\"Irq\" handler, esr 0x%08x\n", esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); } /* * do_fiq handles the Fiq exception. */ void do_fiq(struct pt_regs *pt_regs, unsigned int esr) { printf("\"Fiq\" handler, esr 0x%08x\n", esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); } /* * do_error handles the Error exception. * Errors are more likely to be processor specific, * it is defined with weak attribute and can be redefined * in processor specific code. */ void __weak do_error(struct pt_regs *pt_regs, unsigned int esr) { printf("\"Error\" handler, esr 0x%08x\n", esr); show_regs(pt_regs); panic("Resetting CPU ...\n"); }