summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Getz <robin.getz@analog.com>2009-06-22 20:23:48 (GMT)
committerMike Frysinger <vapier@gentoo.org>2009-07-16 05:52:19 (GMT)
commit0e4edcf0b0f7d96c4be7788b13bee82e4d3ba0ce (patch)
tree908445f9ce4ee04e287b9311ff992686478eb278
parent976119bc5d2253bb47f3255ee178ce1ee605fd3c (diff)
downloadlinux-fsl-qoriq-0e4edcf0b0f7d96c4be7788b13bee82e4d3ba0ce.tar.xz
Blackfin: work around anomaly 05000281
Add missing anomaly workaround for anomaly 05000281 - we can't return to instructions which cause hardware errors otherwise we trigger the error again which means we go into an infinite loop of handling, returning, and retriggering. This work around confuses gdb when the error occurs as the PC will seemed to have moved, so a better long term fix will need to be figured out, but for now this is better than an infinite crash loop. Signed-off-by: Robin Getz <robin.getz@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
-rw-r--r--arch/blackfin/kernel/traps.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c
index 8a1caf2..664de56 100644
--- a/arch/blackfin/kernel/traps.c
+++ b/arch/blackfin/kernel/traps.c
@@ -619,7 +619,8 @@ asmlinkage void trap_c(struct pt_regs *fp)
force_sig_info(sig, &info, current);
}
- if (ANOMALY_05000461 && trapnr == VEC_HWERR && !access_ok(VERIFY_READ, fp->pc, 8))
+ if ((ANOMALY_05000461 && trapnr == VEC_HWERR && !access_ok(VERIFY_READ, fp->pc, 8)) ||
+ (ANOMALY_05000281 && trapnr == VEC_HWERR))
fp->pc = SAFE_USER_INSTRUCTION;
traps_done: