sh: Support for SH-4A memory barriers.
[linux-2.6.git] / include / asm-sh / system.h
index e89728d405d8380ac6177b18c7b54ca6bbb2bcc9..eb4902ed920a94c1ef379020b036fce88a434728 100644 (file)
@@ -84,10 +84,17 @@ static __inline__ unsigned long tas(volatile int *m)
 
 extern void __xchg_called_with_bad_pointer(void);
 
+#ifdef CONFIG_CPU_SH4A
+#define mb()   __asm__ __volatile__ ("synco": : :"memory")
+#define rmb()  mb()
+#define wmb()  __asm__ __volatile__ ("synco": : :"memory")
+#define read_barrier_depends() do { } while(0)
+#else
 #define mb()   __asm__ __volatile__ ("": : :"memory")
 #define rmb()  mb()
 #define wmb()  __asm__ __volatile__ ("": : :"memory")
 #define read_barrier_depends() do { } while(0)
+#endif
 
 #ifdef CONFIG_SMP
 #define smp_mb()       mb()