summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristophe Fergeau <cfergeau@redhat.com>2013-04-10 13:59:34 +0200
committerChristophe Fergeau <cfergeau@redhat.com>2016-01-08 15:31:38 +0100
commit6b86c1a510f333f53a6955cd09da16fd98731d02 (patch)
treef8c35622162abf129c9d33668e2333f241678aff
parentcffb8baee117710087445c968acc55654f74f508 (diff)
downloadspice-protocol-6b86c1a510f333f53a6955cd09da16fd98731d02.tar.gz
spice-protocol-6b86c1a510f333f53a6955cd09da16fd98731d02.tar.xz
spice-protocol-6b86c1a510f333f53a6955cd09da16fd98731d02.zip
Use gcc builtin rather than asm for memory barriers
This should make things more portable. On my machine, __sync_synchronize() uses mfence rather than lock; addl; Looking at the kernel memory barriers, this should be fine: http://lxr.free-electrons.com/source/arch/x86/um/asm/barrier.h The kernel favours using mfence, but falls back to lock; addl; when it's not available (32 bit non-SSE machines). https://bugs.freedesktop.org/show_bug.cgi?id=86997
-rw-r--r--spice/barrier.h7
1 files changed, 1 insertions, 6 deletions
diff --git a/spice/barrier.h b/spice/barrier.h
index 710da09..7d63721 100644
--- a/spice/barrier.h
+++ b/spice/barrier.h
@@ -34,12 +34,7 @@
#ifdef __GNUC__
-#ifdef __i386__
-#define spice_mb() __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
-#else
-//mfence
-#define spice_mb() __asm__ __volatile__ ("lock; addl $0,0(%%rsp)": : :"memory")
-#endif
+#define spice_mb() __sync_synchronize ()
#else