blob: b4767225564f97627ac39f09137206a5e1c0bbcf [file] [log] [blame]
David Feng85fd5f12013-12-14 11:47:35 +08001/*
2 * (C) Copyright 2013
3 * David Feng <fenghua@phytium.com.cn>
4 *
5 * SPDX-License-Identifier: GPL-2.0+
6 */
7
8#include <common.h>
9#include <linux/compiler.h>
10
11
12int interrupt_init(void)
13{
14 return 0;
15}
16
17void enable_interrupts(void)
18{
19 return;
20}
21
22int disable_interrupts(void)
23{
24 return 0;
25}
26
27void show_regs(struct pt_regs *regs)
28{
29 int i;
30
31 printf("ELR: %lx\n", regs->elr);
32 printf("LR: %lx\n", regs->regs[30]);
33 for (i = 0; i < 29; i += 2)
34 printf("x%-2d: %016lx x%-2d: %016lx\n",
35 i, regs->regs[i], i+1, regs->regs[i+1]);
36 printf("\n");
37}
38
39/*
40 * do_bad_sync handles the impossible case in the Synchronous Abort vector.
41 */
42void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr)
43{
44 printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08x\n", esr);
45 show_regs(pt_regs);
46 panic("Resetting CPU ...\n");
47}
48
49/*
50 * do_bad_irq handles the impossible case in the Irq vector.
51 */
52void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr)
53{
54 printf("Bad mode in \"Irq\" handler, esr 0x%08x\n", esr);
55 show_regs(pt_regs);
56 panic("Resetting CPU ...\n");
57}
58
59/*
60 * do_bad_fiq handles the impossible case in the Fiq vector.
61 */
62void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr)
63{
64 printf("Bad mode in \"Fiq\" handler, esr 0x%08x\n", esr);
65 show_regs(pt_regs);
66 panic("Resetting CPU ...\n");
67}
68
69/*
70 * do_bad_error handles the impossible case in the Error vector.
71 */
72void do_bad_error(struct pt_regs *pt_regs, unsigned int esr)
73{
74 printf("Bad mode in \"Error\" handler, esr 0x%08x\n", esr);
75 show_regs(pt_regs);
76 panic("Resetting CPU ...\n");
77}
78
79/*
80 * do_sync handles the Synchronous Abort exception.
81 */
82void do_sync(struct pt_regs *pt_regs, unsigned int esr)
83{
84 printf("\"Synchronous Abort\" handler, esr 0x%08x\n", esr);
85 show_regs(pt_regs);
86 panic("Resetting CPU ...\n");
87}
88
89/*
90 * do_irq handles the Irq exception.
91 */
92void do_irq(struct pt_regs *pt_regs, unsigned int esr)
93{
94 printf("\"Irq\" handler, esr 0x%08x\n", esr);
95 show_regs(pt_regs);
96 panic("Resetting CPU ...\n");
97}
98
99/*
100 * do_fiq handles the Fiq exception.
101 */
102void do_fiq(struct pt_regs *pt_regs, unsigned int esr)
103{
104 printf("\"Fiq\" handler, esr 0x%08x\n", esr);
105 show_regs(pt_regs);
106 panic("Resetting CPU ...\n");
107}
108
109/*
110 * do_error handles the Error exception.
111 * Errors are more likely to be processor specific,
112 * it is defined with weak attribute and can be redefined
113 * in processor specific code.
114 */
115void __weak do_error(struct pt_regs *pt_regs, unsigned int esr)
116{
117 printf("\"Error\" handler, esr 0x%08x\n", esr);
118 show_regs(pt_regs);
119 panic("Resetting CPU ...\n");
120}