aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Deacon <will.deacon@arm.com>2014-05-02 16:24:12 +0100
committerMark Brown <broonie@kernel.org>2014-10-23 19:47:55 +0100
commitb817da4cf03a33c8c40e3bef04d3f3ed64277d47 (patch)
treed6b6972db11515d5e533bdff229c8f5f7dc8ca06
parent3774b37a724bbdd3811f677b991d66b204328257 (diff)
arm64: barriers: use barrier() instead of smp_mb() when !SMP
The recently introduced acquire/release accessors refer to smp_mb() in the !CONFIG_SMP case. This is confusing when reading the code, so use barrier() directly when we know we're UP. Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> (cherry picked from commit be6209a6107e0f63544e3e7d00fd5c95434ec80a) Signed-off-by: Mark Brown <broonie@kernel.org> Conflicts: arch/arm64/include/asm/barrier.h
-rw-r--r--arch/arm64/include/asm/barrier.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm64/include/asm/barrier.h b/arch/arm64/include/asm/barrier.h
index 9a4c3d5b402e..709f1f6d6bbd 100644
--- a/arch/arm64/include/asm/barrier.h
+++ b/arch/arm64/include/asm/barrier.h
@@ -36,6 +36,22 @@
#define smp_mb() barrier()
#define smp_rmb() barrier()
#define smp_wmb() barrier()
+
+#define smp_store_release(p, v) \
+do { \
+ compiletime_assert_atomic_type(*p); \
+ barrier(); \
+ ACCESS_ONCE(*p) = (v); \
+} while (0)
+
+#define smp_load_acquire(p) \
+({ \
+ typeof(*p) ___p1 = ACCESS_ONCE(*p); \
+ compiletime_assert_atomic_type(*p); \
+ barrier(); \
+ ___p1; \
+})
+
#else
#define smp_mb() dmb(ish)