tag 660806 + patch
thanks

Hi,

The attached patch avoids the mfence instruction on i386.  Contrary to
the comment near the change, using __sync_synchronize on i386 does
create a "lock orl" instruction, which is hopefully sufficient.

-- 
Matt Kraai
https://ftbfs.org/kraai
Index: libdispatch-0~svn197/src/hw_shims.h
===================================================================
--- libdispatch-0~svn197.orig/src/hw_shims.h	2010-12-24 07:30:44.000000000 -0800
+++ libdispatch-0~svn197/src/hw_shims.h	2012-02-23 05:03:21.910448577 -0800
@@ -48,7 +48,7 @@
 #define dispatch_atomic_sub(p, v)	__sync_sub_and_fetch((p), (v))
 #define dispatch_atomic_or(p, v)	__sync_fetch_and_or((p), (v))
 #define dispatch_atomic_and(p, v)	__sync_fetch_and_and((p), (v))
-#if defined(__i386__) || defined(__x86_64__)
+#if 0 && defined(__i386__) || defined(__x86_64__)
 /* GCC emits nothing for __sync_synchronize() on i386/x86_64. */
 #define dispatch_atomic_barrier()	__asm__ __volatile__("mfence")
 #else

Reply via email to