diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-06-15 15:28:22 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-06-15 15:28:22 +0000 |
commit | edccfee70b18eeee7493fbcffe55351e8fa3f3e8 (patch) | |
tree | 74c0e95975a2e4700270f4c6db0eaf731cf603e0 /xen/include/asm-x86/system.h | |
parent | 36104e9cc197be40af285aac6eeff6ceba3382a4 (diff) | |
download | xen-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.h | 16 |
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 |