diff options
author | Robin Getz <robin.getz@analog.com> | 2009-05-11 18:55:16 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-06-12 06:11:46 -0400 |
commit | 0acad8dfee6bde7e246a95a52f864a8eee777ed8 (patch) | |
tree | b50fff31b98b11353f58bdae9367fe6a276eecab /arch/blackfin/kernel/traps.c | |
parent | a0cab65642813b7990e1b4b2ab6ad92e171571f4 (diff) | |
download | blackbird-op-linux-0acad8dfee6bde7e246a95a52f864a8eee777ed8.tar.gz blackbird-op-linux-0acad8dfee6bde7e246a95a52f864a8eee777ed8.zip |
Blackfin: add workaround for anomaly 05000461
Returning too fast with a bad RETI can trigger false errors.
Signed-off-by: Robin Getz <robin.getz@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'arch/blackfin/kernel/traps.c')
-rw-r--r-- | arch/blackfin/kernel/traps.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 0d04a4732b1f..778a75655a0c 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c @@ -594,6 +594,9 @@ 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)) + fp->pc = SAFE_USER_INSTRUCTION; + trace_buffer_restore(j); return; } |