diff options
Diffstat (limited to 'arch/blackfin/mach-common/interrupt.S')
-rw-r--r-- | arch/blackfin/mach-common/interrupt.S | 56 |
1 files changed, 10 insertions, 46 deletions
diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S index 203e20709163..c6b32fe0f6e9 100644 --- a/arch/blackfin/mach-common/interrupt.S +++ b/arch/blackfin/mach-common/interrupt.S | |||
@@ -46,30 +46,6 @@ | |||
46 | 46 | ||
47 | .align 4 /* just in case */ | 47 | .align 4 /* just in case */ |
48 | 48 | ||
49 | /* | ||
50 | * initial interrupt handlers | ||
51 | */ | ||
52 | |||
53 | #ifndef CONFIG_KGDB | ||
54 | /* interrupt routine for emulation - 0 */ | ||
55 | /* Currently used only if GDB stub is not in - invalid */ | ||
56 | /* gdb-stub set the evt itself */ | ||
57 | /* save registers for post-mortem only */ | ||
58 | ENTRY(_evt_emulation) | ||
59 | SAVE_ALL_SYS | ||
60 | #ifdef CONFIG_FRAME_POINTER | ||
61 | fp = 0; | ||
62 | #endif | ||
63 | r0 = IRQ_EMU; | ||
64 | r1 = sp; | ||
65 | SP += -12; | ||
66 | call _irq_panic; | ||
67 | SP += 12; | ||
68 | /* - GDB stub fills this in by itself (if defined) */ | ||
69 | rte; | ||
70 | ENDPROC(_evt_emulation) | ||
71 | #endif | ||
72 | |||
73 | /* Common interrupt entry code. First we do CLI, then push | 49 | /* Common interrupt entry code. First we do CLI, then push |
74 | * RETI, to keep interrupts disabled, but to allow this state to be changed | 50 | * RETI, to keep interrupts disabled, but to allow this state to be changed |
75 | * by local_bh_enable. | 51 | * by local_bh_enable. |
@@ -140,7 +116,7 @@ __common_int_entry: | |||
140 | fp = 0; | 116 | fp = 0; |
141 | #endif | 117 | #endif |
142 | 118 | ||
143 | #if defined (ANOMALY_05000283) || defined (ANOMALY_05000315) | 119 | #if ANOMALY_05000283 || ANOMALY_05000315 |
144 | cc = r7 == r7; | 120 | cc = r7 == r7; |
145 | p5.h = 0xffc0; | 121 | p5.h = 0xffc0; |
146 | p5.l = 0x0014; | 122 | p5.l = 0x0014; |
@@ -163,7 +139,7 @@ ENTRY(_evt_ivhw) | |||
163 | #ifdef CONFIG_FRAME_POINTER | 139 | #ifdef CONFIG_FRAME_POINTER |
164 | fp = 0; | 140 | fp = 0; |
165 | #endif | 141 | #endif |
166 | #ifdef ANOMALY_05000283 | 142 | #if ANOMALY_05000283 |
167 | cc = r7 == r7; | 143 | cc = r7 == r7; |
168 | p5.h = 0xffc0; | 144 | p5.h = 0xffc0; |
169 | p5.l = 0x0014; | 145 | p5.l = 0x0014; |
@@ -201,27 +177,15 @@ ENTRY(_evt_ivhw) | |||
201 | jump .Lcommon_restore_context; | 177 | jump .Lcommon_restore_context; |
202 | #endif | 178 | #endif |
203 | 179 | ||
204 | /* interrupt routine for evt2 - 2. This is NMI. */ | 180 | /* Interrupt routine for evt2 (NMI). |
205 | ENTRY(_evt_evt2) | 181 | * We don't actually use this, so just return. |
206 | SAVE_CONTEXT | 182 | * For inner circle type details, please see: |
207 | #ifdef CONFIG_FRAME_POINTER | 183 | * http://docs.blackfin.uclinux.org/doku.php?id=linux:nmi |
208 | fp = 0; | 184 | */ |
209 | #endif | 185 | ENTRY(_evt_nmi) |
210 | #ifdef ANOMALY_05000283 | 186 | .weak _evt_nmi |
211 | cc = r7 == r7; | ||
212 | p5.h = 0xffc0; | ||
213 | p5.l = 0x0014; | ||
214 | if cc jump 1f; | ||
215 | r7.l = W[p5]; | ||
216 | 1: | ||
217 | #endif | ||
218 | r0 = IRQ_NMI; | ||
219 | r1 = sp; | ||
220 | SP += -12; | ||
221 | call _asm_do_IRQ; | ||
222 | SP += 12; | ||
223 | RESTORE_CONTEXT | ||
224 | rtn; | 187 | rtn; |
188 | ENDPROC(_evt_nmi) | ||
225 | 189 | ||
226 | /* interrupt routine for core timer - 6 */ | 190 | /* interrupt routine for core timer - 6 */ |
227 | ENTRY(_evt_timer) | 191 | ENTRY(_evt_timer) |