Commit 1c8db713 authored by Paul Mundt's avatar Paul Mundt

sh: Fix up smp_mb__xxx() memory barriers for SH-4A SMP.

In the past these were simply wrapping to barrier() which was sufficient
on SH SMP platforms predating SH-4A. Unfortunately due to ll/sc semantics
an explicit synco is needed in these cases, which is sorted for us by
just switching these over to smp_mb(). smp_mb() also has the benefit of
being wrapped to barrier() in the UP and non-SH4A cases, so old behaviour
is maintained for those parts.
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 15dfdddb
...@@ -78,11 +78,10 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) ...@@ -78,11 +78,10 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u)
#define atomic_xchg(v, new) (xchg(&((v)->counter), new)) #define atomic_xchg(v, new) (xchg(&((v)->counter), new))
#define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
/* Atomic operations are already serializing on SH */ #define smp_mb__before_atomic_dec() smp_mb()
#define smp_mb__before_atomic_dec() barrier() #define smp_mb__after_atomic_dec() smp_mb()
#define smp_mb__after_atomic_dec() barrier() #define smp_mb__before_atomic_inc() smp_mb()
#define smp_mb__before_atomic_inc() barrier() #define smp_mb__after_atomic_inc() smp_mb()
#define smp_mb__after_atomic_inc() barrier()
#include <asm-generic/atomic-long.h> #include <asm-generic/atomic-long.h>
#include <asm-generic/atomic64.h> #include <asm-generic/atomic64.h>
......
...@@ -26,8 +26,8 @@ ...@@ -26,8 +26,8 @@
/* /*
* clear_bit() doesn't provide any barrier for the compiler. * clear_bit() doesn't provide any barrier for the compiler.
*/ */
#define smp_mb__before_clear_bit() barrier() #define smp_mb__before_clear_bit() smp_mb()
#define smp_mb__after_clear_bit() barrier() #define smp_mb__after_clear_bit() smp_mb()
#ifdef CONFIG_SUPERH32 #ifdef CONFIG_SUPERH32
static inline unsigned long ffz(unsigned long word) static inline unsigned long ffz(unsigned long word)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment