Skip to contentSkip to conversation

cpu barriers moved and x86-64 cpu barriers added

PATCH New Jerone Young 1 participant 1 message Mar 2, 2005 Arm/actions semi architecture

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 cpu barriers moved and x86-64 cpu barriers added

Last patch had build error in blktap that I missed since it is not apart of the standard build process. Also evidence point to that X86-64 by default does have CONFIG_UNORDERED_IO on in the Linux kernel default configuration for x86-64, so since it is really a no op nothing can really go wrong (Anthony you win this time!).

This patch moves all cpu barrier definitions to libxc/xc.h and also adds X86-64 barrier definitions.

Jerone Young
Open Virtualization
IBM Linux Technology Center
[email protected]
512-838-1157 (T/L: 678-1157)

tools/blktap/blktaplib.h +1 -18
diff -Nuarp xen-unstable.orig/tools/blktap/blktaplib.h xen-unstable/tools/blktap/blktaplib.h
@@ -8,24 +8,7 @@
 #ifndef __BLKTAPLIB_H__
 #define __BLKTAPLIB_H__
 
-#include <stdint.h>
-
-typedef uint8_t            u8;
-typedef uint16_t           u16;
-typedef uint32_t           u32;
-typedef uint64_t           u64;
-typedef int8_t             s8;
-typedef int16_t            s16;
-typedef int32_t            s32;
-typedef int64_t            s64;
-                                                                                
-#if defined(__i386__)
-#define rmb() __asm__ __volatile__ ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define wmb() __asm__ __volatile__ ( "" : : : "memory" )
-#else
-#error "Define barriers"
-#endif
-    
+#include <xc.h>
 #include <sys/user.h>
 #include <xen/xen.h>
 #include <xen/io/blkif.h>
tools/libxc/xc.h +15 -0
diff -Nuarp xen-unstable.orig/tools/libxc/xc.h xen-unstable/tools/libxc/xc.h
@@ -25,6 +25,21 @@ typedef int64_t            s64;
 #include <xen/event_channel.h>
 #include <xen/sched_ctl.h>
 
+
+/*\
+ *  DEFINITIONS FOR CPU BARRIERS
+\*/ 
+#if defined(__i386__)
+#define rmb() __asm__ __volatile__ ( "lock; addl $0,0(%%esp)" : : : "memory" )
+#define wmb() __asm__ __volatile__ ( "" : : : "memory" )
+#elif defined(__x86_64__)
+#define mb() __asm__ __volatile__ ( "mfence" : : : "memory" )
+#define rmb() __asm__ __volatile__ ( "lfence" : : : "memory" )
+#define wmb() __asm__ __volatile__ ( "sfence" : : : "memory" )
+#else
+#error "Define barriers"
+#endif
+
 /*\
  *  INITIALIZATION FUNCTIONS
 \*/ 
tools/python/xen/lowlevel/xu/xu.c +0 -8
diff -Nuarp xen-unstable.orig/tools/python/xen/lowlevel/xu/xu.c xen-unstable/tools/python/xen/lowlevel/xu/xu.c
@@ -49,14 +49,6 @@
 /* Size of a machine page frame. */
 #define PAGE_SIZE 4096
 
-#if defined(__i386__)
-#define rmb() __asm__ __volatile__ ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define wmb() __asm__ __volatile__ ( "" : : : "memory" )
-#else
-#error "Define barriers"
-#endif
-
-
 /* Set the close-on-exec flag on a file descriptor.  Doesn't currently bother
  * to check for errors. */
 /*
tools/xcs/xcs.h +0 -7
diff -Nuarp xen-unstable.orig/tools/xcs/xcs.h xen-unstable/tools/xcs/xcs.h
@@ -39,13 +39,6 @@
 /* Size of a machine page frame. */
 #define PAGE_SIZE 4096
 
-#if defined(__i386__)
-#define rmb() __asm__ __volatile__ ( "lock; addl $0,0(%%esp)" : : : "memory" )
-#define wmb() __asm__ __volatile__ ( "" : : : "memory" )
-#else
-#error "Define barriers"
-#endif
-
 #ifndef timersub /* XOPEN and __BSD don't cooperate well... */
 #define timersub(a, b, result)                                                \
   do {                                                                        \