123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*
- * (C) Copyright 2013
- * David Feng <fenghua@phytium.com.cn>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
- #include <common.h>
- #include <linux/compiler.h>
- #include <efi_loader.h>
- 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)
- {
- efi_restore_gd();
- 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)
- {
- efi_restore_gd();
- 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)
- {
- efi_restore_gd();
- 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)
- {
- efi_restore_gd();
- 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)
- {
- efi_restore_gd();
- 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)
- {
- efi_restore_gd();
- 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)
- {
- efi_restore_gd();
- 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)
- {
- efi_restore_gd();
- printf("\"Error\" handler, esr 0x%08x\n", esr);
- show_regs(pt_regs);
- panic("Resetting CPU ...\n");
- }
|