aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/include/asm/spinlock.h
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2020-07-28 18:56:14 +0200
committerHelge Deller <deller@gmx.de>2020-07-28 18:56:14 +0200
commit157e9afcc4fa25068b0e8743bc254a9b56010e13 (patch)
tree12067408b5efc801bd2d56085cce4d7747201557 /arch/parisc/include/asm/spinlock.h
parentRevert "parisc: Use ldcw instruction for SMP spinlock release barrier" (diff)
downloadlinux-dev-157e9afcc4fa25068b0e8743bc254a9b56010e13.tar.xz
linux-dev-157e9afcc4fa25068b0e8743bc254a9b56010e13.zip
Revert "parisc: Revert "Release spinlocks using ordered store""
This reverts commit 86d4d068df573a8c2105554624796c086d6bec3d. Signed-off-by: Helge Deller <deller@gmx.de> Cc: <stable@vger.kernel.org> # v5.0+
Diffstat (limited to 'arch/parisc/include/asm/spinlock.h')
-rw-r--r--arch/parisc/include/asm/spinlock.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h
index 6f85ca70ce23..51b6c47f802f 100644
--- a/arch/parisc/include/asm/spinlock.h
+++ b/arch/parisc/include/asm/spinlock.h
@@ -37,8 +37,8 @@ static inline void arch_spin_unlock(arch_spinlock_t *x)
volatile unsigned int *a;
a = __ldcw_align(x);
- mb();
- *a = 1;
+ /* Release with ordered store. */
+ __asm__ __volatile__("stw,ma %0,0(%1)" : : "r"(1), "r"(a) : "memory");
}
static inline int arch_spin_trylock(arch_spinlock_t *x)