diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2005-10-02 17:34:35 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2005-10-02 17:34:35 -0400 |
commit | 2c3a0540999ac9bd7147fb98833224a58cdaf217 (patch) | |
tree | 85fe67c8a02c5e7b90f9ceb2330c0e6b8d1f6b7d /arch | |
parent | 487fd4eb1445407c9760af08b0b34c3f4cdb4afc (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>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/arm/mm/abort-ev6.S | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/arm/mm/abort-ev6.S b/arch/arm/mm/abort-ev6.S index 8f76f3df7b4c..dbd346033122 100644 --- a/arch/arm/mm/abort-ev6.S +++ b/arch/arm/mm/abort-ev6.S | |||
@@ -20,6 +20,11 @@ | |||
20 | */ | 20 | */ |
21 | .align 5 | 21 | .align 5 |
22 | ENTRY(v6_early_abort) | 22 | ENTRY(v6_early_abort) |
23 | #ifdef CONFIG_CPU_MPCORE | ||
24 | clrex | ||
25 | #else | ||
26 | strex r0, r1, [sp] @ Clear the exclusive monitor | ||
27 | #endif | ||
23 | mrc p15, 0, r1, c5, c0, 0 @ get FSR | 28 | mrc p15, 0, r1, c5, c0, 0 @ get FSR |
24 | mrc p15, 0, r0, c6, c0, 0 @ get FAR | 29 | mrc p15, 0, r0, c6, c0, 0 @ get FAR |
25 | /* | 30 | /* |