]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/asm-x86/system_32.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild
[karo-tx-linux.git] / include / asm-x86 / system_32.h
index d69ba937e09251769e2f00d54c0c91562a4127e8..e7e5d426fef58c2b6892fea59c341528d827afaf 100644 (file)
@@ -216,6 +216,7 @@ static inline unsigned long get_limit(unsigned long segment)
 
 #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2)
 #define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2)
+#define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM)
 
 /**
  * read_barrier_depends - Flush all pending reads that subsequents reads
@@ -271,18 +272,18 @@ static inline unsigned long get_limit(unsigned long segment)
 
 #define read_barrier_depends() do { } while(0)
 
+#ifdef CONFIG_SMP
+#define smp_mb()       mb()
+#ifdef CONFIG_X86_PPRO_FENCE
+# define smp_rmb()     rmb()
+#else
+# define smp_rmb()     barrier()
+#endif
 #ifdef CONFIG_X86_OOSTORE
-/* Actually there are no OOO store capable CPUs for now that do SSE, 
-   but make it already an possibility. */
-#define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM)
+# define smp_wmb()     wmb()
 #else
-#define wmb()  __asm__ __volatile__ ("": : :"memory")
+# define smp_wmb()     barrier()
 #endif
-
-#ifdef CONFIG_SMP
-#define smp_mb()       mb()
-#define smp_rmb()      rmb()
-#define smp_wmb()      wmb()
 #define smp_read_barrier_depends()     read_barrier_depends()
 #define set_mb(var, value) do { (void) xchg(&var, value); } while (0)
 #else