diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-10-18 02:36:02 -0400 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-10-18 02:36:02 -0400 |
commit | 1c8db713e21c82e14d0d1be14a09dae224472396 (patch) | |
tree | b8582d42e6f2a0fdcb0fe40ee319c90efc8664a8 /arch/sh/include/asm/bitops.h | |
parent | 15dfdddbf0c2be680d5d2fe2bbe3aad3dba3cf0e (diff) |
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: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/include/asm/bitops.h')
-rw-r--r-- | arch/sh/include/asm/bitops.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/sh/include/asm/bitops.h b/arch/sh/include/asm/bitops.h index ebe595b7ab1f..98511e4d28cb 100644 --- a/arch/sh/include/asm/bitops.h +++ b/arch/sh/include/asm/bitops.h | |||
@@ -26,8 +26,8 @@ | |||
26 | /* | 26 | /* |
27 | * clear_bit() doesn't provide any barrier for the compiler. | 27 | * clear_bit() doesn't provide any barrier for the compiler. |
28 | */ | 28 | */ |
29 | #define smp_mb__before_clear_bit() barrier() | 29 | #define smp_mb__before_clear_bit() smp_mb() |
30 | #define smp_mb__after_clear_bit() barrier() | 30 | #define smp_mb__after_clear_bit() smp_mb() |
31 | 31 | ||
32 | #ifdef CONFIG_SUPERH32 | 32 | #ifdef CONFIG_SUPERH32 |
33 | static inline unsigned long ffz(unsigned long word) | 33 | static inline unsigned long ffz(unsigned long word) |