aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/system.h
diff options
context:
space:
mode:
authorkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2004-06-15 15:28:22 +0000
committerkaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk>2004-06-15 15:28:22 +0000
commitedccfee70b18eeee7493fbcffe55351e8fa3f3e8 (patch)
tree74c0e95975a2e4700270f4c6db0eaf731cf603e0 /xen/include/asm-x86/system.h
parent36104e9cc197be40af285aac6eeff6ceba3382a4 (diff)
downloadxen-edccfee70b18eeee7493fbcffe55351e8fa3f3e8.tar.gz
xen-edccfee70b18eeee7493fbcffe55351e8fa3f3e8.tar.bz2
xen-edccfee70b18eeee7493fbcffe55351e8fa3f3e8.zip
bitkeeper revision 1.968 (40cf1596Prlo7Ak2J5KWtvKaolWxOg)
More x86_64 stuff.
Diffstat (limited to 'xen/include/asm-x86/system.h')
-rw-r--r--xen/include/asm-x86/system.h16
1 files changed, 12 insertions, 4 deletions
diff --git a/xen/include/asm-x86/system.h b/xen/include/asm-x86/system.h
index b15499cce8..55f51a839e 100644
--- a/xen/include/asm-x86/system.h
+++ b/xen/include/asm-x86/system.h
@@ -168,13 +168,21 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old,
* Some non intel clones support out of order store. wmb() ceases to be a
* nop for these.
*/
-
+#if defined(__i386__)
#define mb() __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
-#define rmb() mb()
-
+#define rmb() __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
#ifdef CONFIG_X86_OOSTORE
#define wmb() __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
-#else
+#endif
+#elif defined(__x86_64__)
+#define mb() __asm__ __volatile__ ("mfence":::"memory")
+#define rmb() __asm__ __volatile__ ("lfence":::"memory")
+#ifdef CONFIG_X86_OOSTORE
+#define wmb() __asm__ __volatile__ ("sfence":::"memory")
+#endif
+#endif
+
+#ifndef CONFIG_X86_OOSTORE
#define wmb() __asm__ __volatile__ ("": : :"memory")
#endif