diff options
author | Robin Getz <rgetz@blackfin.uclinux.org> | 2008-10-09 05:06:32 -0400 |
---|---|---|
committer | Bryan Wu <cooloney@kernel.org> | 2008-10-09 05:06:32 -0400 |
commit | 1d5ff7e27d2ca30cd3f61afd353b03dd67330818 (patch) | |
tree | ceadc8dd11d69c438eca73285c1d8faab7b58977 /arch/blackfin/mach-common/interrupt.S | |
parent | 55f2feae3a1e075d9b4b0e73a6024f3e25717878 (diff) |
Blackfin arch: Fix bug - HW Errors never recover on BF548
The kernel does not properly clear the EBIU Error Master (EBIU_ERRMST) Register
on BF548, which causes the kernel to panic.
We need to make sure that we clear the EBIU_ERRMST (necessary on BF54x)
Signed-off-by: Robin Getz <rgetz@blackfin.uclinux.org>
Signed-off-by: Bryan Wu <cooloney@kernel.org>
Diffstat (limited to 'arch/blackfin/mach-common/interrupt.S')
-rw-r--r-- | arch/blackfin/mach-common/interrupt.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/blackfin/mach-common/interrupt.S b/arch/blackfin/mach-common/interrupt.S index 647f0f522910..4a2ec7a9675a 100644 --- a/arch/blackfin/mach-common/interrupt.S +++ b/arch/blackfin/mach-common/interrupt.S | |||
@@ -179,7 +179,16 @@ ENTRY(_evt_ivhw) | |||
179 | call _trap_c; | 179 | call _trap_c; |
180 | SP += 12; | 180 | SP += 12; |
181 | 181 | ||
182 | #ifdef EBIU_ERRMST | ||
183 | /* make sure EBIU_ERRMST is clear */ | ||
184 | p0.l = LO(EBIU_ERRMST); | ||
185 | p0.h = HI(EBIU_ERRMST); | ||
186 | r0.l = (CORE_ERROR | CORE_MERROR); | ||
187 | w[p0] = r0.l; | ||
188 | #endif | ||
189 | |||
182 | call _ret_from_exception; | 190 | call _ret_from_exception; |
191 | |||
183 | .Lcommon_restore_all_sys: | 192 | .Lcommon_restore_all_sys: |
184 | RESTORE_ALL_SYS | 193 | RESTORE_ALL_SYS |
185 | rti; | 194 | rti; |