aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/mach-common/interrupt.S
diff options
context:
space:
mode:
authorGraf Yang <graf.yang@analog.com>2010-01-20 05:56:24 -0500
committerMike Frysinger <vapier@gentoo.org>2010-03-09 00:30:49 -0500
commit60ffdb36547da2397d6cfefe9c752ebad16524f6 (patch)
treece188bc0ccd1d8d0e6ff0f49937dca95e1f571c0 /arch/blackfin/mach-common/interrupt.S
parent726e96561e4704278bc5197238f6459e1a63aa77 (diff)
Blackfin: implement nmi_watchdog for SMP on BF561
Signed-off-by: Graf Yang <graf.yang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/mach-common/interrupt.S')
-rw-r--r--arch/blackfin/mach-common/interrupt.S18
1 files changed, 17 insertions, 1 deletions
diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S
index 0a0c088ead8c..cee62cf4acd4 100644
--- a/arch/blackfin/mach-common/interrupt.S
+++ b/arch/blackfin/mach-common/interrupt.S
@@ -194,12 +194,28 @@ ENTRY(_evt_ivhw)
194ENDPROC(_evt_ivhw) 194ENDPROC(_evt_ivhw)
195 195
196/* Interrupt routine for evt2 (NMI). 196/* Interrupt routine for evt2 (NMI).
197 * We don't actually use this, so just return.
198 * For inner circle type details, please see: 197 * For inner circle type details, please see:
199 * http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:nmi 198 * http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:nmi
200 */ 199 */
201ENTRY(_evt_nmi) 200ENTRY(_evt_nmi)
201#ifndef CONFIG_NMI_WATCHDOG
202.weak _evt_nmi 202.weak _evt_nmi
203#else
204 /* Not take account of CPLBs, this handler will not return */
205 SAVE_ALL_SYS
206 r0 = sp;
207 r1 = retn;
208 [sp + PT_PC] = r1;
209 trace_buffer_save(p4,r5);
210
211 ANOMALY_283_315_WORKAROUND(p4, r5)
212
213 SP += -12;
214 call _do_nmi;
215 SP += 12;
2161:
217 jump 1b;
218#endif
203 rtn; 219 rtn;
204ENDPROC(_evt_nmi) 220ENDPROC(_evt_nmi)
205 221