aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2005-10-02 22:34:35 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2005-10-02 22:34:35 +0100
commit2c3a0540999ac9bd7147fb98833224a58cdaf217 (patch)
tree85fe67c8a02c5e7b90f9ceb2330c0e6b8d1f6b7d
parent487fd4eb1445407c9760af08b0b34c3f4cdb4afc (diff)
[ARM] 2943/1: Clear the exclusive monitor in v6_early_abort
Patch from Catalin Marinas Data abort caused by ldrex/strex can leave the exclusive monitor in an unpredictable state. It is recommended that a clrex/strex is performed to clear this state. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mm/abort-ev6.S5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S
index 8f76f3df7b4..dbd34603312 100644
--- a/arch/arm/mm/abort-ev6.S
+++ b/arch/arm/mm/abort-ev6.S
@@ -20,6 +20,11 @@
*/
.align 5
ENTRY(v6_early_abort)
+#ifdef CONFIG_CPU_MPCORE
+ clrex
+#else
+ strex r0, r1, [sp] @ Clear the exclusive monitor
+#endif
mrc p15, 0, r1, c5, c0, 0 @ get FSR
mrc p15, 0, r0, c6, c0, 0 @ get FAR
/*