libxc: Update rmb/wmb for x86.
authorKeir Fraser <keir@xen.org>
Sat, 21 Jan 2012 17:14:37 +0000 (17:14 +0000)
committerKeir Fraser <keir@xen.org>
Sat, 21 Jan 2012 17:14:37 +0000 (17:14 +0000)
Only the compiler needs to see the barriers; not the CPU.

Signed-off-by: Keir Fraser <keir@xen.org>
tools/libxc/xenctrl.h

index 8b347697cc8c4f2e340f671b72fb839fde06df40..37b0fd6f236da7c9261074fde77fe71aec38ca2e 100644 (file)
  *  DEFINITIONS FOR CPU BARRIERS
  */
 
+#define xen_barrier() asm volatile ( "" : : : "memory")
+
 #if defined(__i386__)
 #define xen_mb()  asm volatile ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define xen_rmb() asm volatile ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define xen_wmb() asm volatile ( "" : : : "memory")
+#define xen_rmb() xen_barrier()
+#define xen_wmb() xen_barrier()
 #elif defined(__x86_64__)
 #define xen_mb()  asm volatile ( "mfence" : : : "memory")
-#define xen_rmb() asm volatile ( "lfence" : : : "memory")
-#define xen_wmb() asm volatile ( "" : : : "memory")
+#define xen_rmb() xen_barrier()
+#define xen_wmb() xen_barrier()
 #elif defined(__ia64__)
 #define xen_mb()   asm volatile ("mf" ::: "memory")
 #define xen_rmb()  asm volatile ("mf" ::: "memory")