6e17d9
diff -up tbb40_20110809oss/include/tbb/machine/linux_ia32.h\~ tbb40_20110809oss/include/tbb/machine/linux_ia32.h
6e17d9
--- tbb40_20110809oss/include/tbb/machine/linux_ia32.h~	2011-08-24 15:51:56.000000000 +0200
6e17d9
+++ tbb40_20110809oss/include/tbb/machine/linux_ia32.h	2011-10-18 15:04:01.994271994 +0200
6e17d9
@@ -42,7 +42,14 @@
6e17d9
 #define __TBB_control_consistency_helper() __TBB_compiler_fence()
6e17d9
 #define __TBB_acquire_consistency_helper() __TBB_compiler_fence()
6e17d9
 #define __TBB_release_consistency_helper() __TBB_compiler_fence()
6e17d9
-#define __TBB_full_memory_fence()          __asm__ __volatile__("mfence": : :"memory")
6e17d9
+#define __TBB_full_memory_fence()          __TBB_full_memory_fence_imp()
6e17d9
+inline void __TBB_full_memory_fence_imp() {
6e17d9
+    int tmp;
6e17d9
+    __asm__ __volatile__("xchg %0,%0"
6e17d9
+			 : "=r"(tmp)
6e17d9
+			 : "r"(tmp)
6e17d9
+			 : "memory");
6e17d9
+}
6e17d9
 
6e17d9
 #if __TBB_ICC_ASM_VOLATILE_BROKEN
6e17d9
 #define __TBB_VOLATILE
6e17d9
6e17d9
Diff finished.  Tue Oct 18 15:04:09 2011