3 * David Feng <fenghua@phytium.com.cn>
5 * SPDX-License-Identifier: GPL-2.0+
9 #include <linux/compiler.h>
10 #include <efi_loader.h>
12 DECLARE_GLOBAL_DATA_PTR;
14 int interrupt_init(void)
19 void enable_interrupts(void)
24 int disable_interrupts(void)
29 void show_regs(struct pt_regs *regs)
33 if (gd->flags & GD_FLG_RELOC) {
34 printf("ELR: %08lx (pre-reloc: %08lx)\n",
35 regs->elr, regs->elr - gd->reloc_off);
36 printf("LR: %08lx (pre-reloc: %08lx)\n",
37 regs->regs[30], regs->regs[30] - gd->reloc_off);
39 printf("ELR: %08lx\n", regs->elr);
40 printf("LR: %08lx\n", regs->regs[30]);
42 for (i = 0; i < 29; i += 2)
43 printf("x%-2d: %016lx x%-2d: %016lx\n",
44 i, regs->regs[i], i+1, regs->regs[i+1]);
49 * do_bad_sync handles the impossible case in the Synchronous Abort vector.
51 void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr)
54 printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08x\n", esr);
56 panic("Resetting CPU ...\n");
60 * do_bad_irq handles the impossible case in the Irq vector.
62 void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr)
65 printf("Bad mode in \"Irq\" handler, esr 0x%08x\n", esr);
67 panic("Resetting CPU ...\n");
71 * do_bad_fiq handles the impossible case in the Fiq vector.
73 void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr)
76 printf("Bad mode in \"Fiq\" handler, esr 0x%08x\n", esr);
78 panic("Resetting CPU ...\n");
82 * do_bad_error handles the impossible case in the Error vector.
84 void do_bad_error(struct pt_regs *pt_regs, unsigned int esr)
87 printf("Bad mode in \"Error\" handler, esr 0x%08x\n", esr);
89 panic("Resetting CPU ...\n");
93 * do_sync handles the Synchronous Abort exception.
95 void do_sync(struct pt_regs *pt_regs, unsigned int esr)
98 printf("\"Synchronous Abort\" handler, esr 0x%08x\n", esr);
100 panic("Resetting CPU ...\n");
104 * do_irq handles the Irq exception.
106 void do_irq(struct pt_regs *pt_regs, unsigned int esr)
109 printf("\"Irq\" handler, esr 0x%08x\n", esr);
111 panic("Resetting CPU ...\n");
115 * do_fiq handles the Fiq exception.
117 void do_fiq(struct pt_regs *pt_regs, unsigned int esr)
120 printf("\"Fiq\" handler, esr 0x%08x\n", esr);
122 panic("Resetting CPU ...\n");
126 * do_error handles the Error exception.
127 * Errors are more likely to be processor specific,
128 * it is defined with weak attribute and can be redefined
129 * in processor specific code.
131 void __weak do_error(struct pt_regs *pt_regs, unsigned int esr)
134 printf("\"Error\" handler, esr 0x%08x\n", esr);
136 panic("Resetting CPU ...\n");