arm64: barriers: use barrier() instead of smp_mb() when !SMP
authorWill Deacon <will.deacon@arm.com>
Fri, 2 May 2014 15:24:12 +0000 (16:24 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 23 Oct 2014 18:47:55 +0000 (19:47 +0100)
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

arch/arm64/include/asm/barrier.h

index 9a4c3d5b402e35acc8cb7e5636db73cb8a62e365..709f1f6d6bbd8fb5623beb94523dce950433f94d 100644 (file)
 #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)