diff options
author | Graf Yang <graf.yang@analog.com> | 2010-01-20 11:56:24 +0100 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2010-03-09 06:30:49 +0100 |
commit | 60ffdb36547da2397d6cfefe9c752ebad16524f6 (patch) | |
tree | ce188bc0ccd1d8d0e6ff0f49937dca95e1f571c0 /arch/blackfin/mach-common | |
parent | Blackfin: respect the L1 kconfig optimization in the MPU code (diff) | |
download | linux-60ffdb36547da2397d6cfefe9c752ebad16524f6.tar.xz linux-60ffdb36547da2397d6cfefe9c752ebad16524f6.zip |
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')
-rw-r--r-- | arch/blackfin/mach-common/interrupt.S | 18 |
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) ENDPROC(_evt_ivhw) /* Interrupt routine for evt2 (NMI). - * We don't actually use this, so just return. * For inner circle type details, please see: * http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:nmi */ ENTRY(_evt_nmi) +#ifndef CONFIG_NMI_WATCHDOG .weak _evt_nmi +#else + /* Not take account of CPLBs, this handler will not return */ + SAVE_ALL_SYS + r0 = sp; + r1 = retn; + [sp + PT_PC] = r1; + trace_buffer_save(p4,r5); + + ANOMALY_283_315_WORKAROUND(p4, r5) + + SP += -12; + call _do_nmi; + SP += 12; +1: + jump 1b; +#endif rtn; ENDPROC(_evt_nmi) |