diff -Napur -X /home/jbarnes/dontdiff linux-2.6.20/arch/x86_64/lib/memcpy.S linux-2.6.20-no-rmb/arch/x86_64/lib/memcpy.S --- linux-2.6.20/arch/x86_64/lib/memcpy.S 2007-02-04 10:44:54.000000000 -0800 +++ linux-2.6.20-no-rmb/arch/x86_64/lib/memcpy.S 2007-04-19 12:01:34.000000000 -0700 @@ -26,6 +26,7 @@ memcpy_c: rep movsq movl %edx,%ecx rep movsb + sfence ret CFI_ENDPROC ENDPROC(memcpy_c) diff -Napur -X /home/jbarnes/dontdiff linux-2.6.20/arch/x86_64/lib/memset.S linux-2.6.20-no-rmb/arch/x86_64/lib/memset.S --- linux-2.6.20/arch/x86_64/lib/memset.S 2007-02-04 10:44:54.000000000 -0800 +++ linux-2.6.20-no-rmb/arch/x86_64/lib/memset.S 2007-04-19 12:02:04.000000000 -0700 @@ -28,6 +28,7 @@ memset_c: movl %r8d,%ecx rep stosb movq %r9,%rax + sfence ret CFI_ENDPROC ENDPROC(memset_c) diff -Napur -X /home/jbarnes/dontdiff linux-2.6.20/include/asm-i386/system.h linux-2.6.20-no-rmb/include/asm-i386/system.h --- linux-2.6.20/include/asm-i386/system.h 2007-02-04 10:44:54.000000000 -0800 +++ linux-2.6.20-no-rmb/include/asm-i386/system.h 2007-04-19 11:19:26.000000000 -0700 @@ -421,7 +421,7 @@ static inline unsigned long long __cmpxc */ #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) -#define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2) +#define rmb() asm volatile("" ::: "memory") /** * read_barrier_depends - Flush all pending reads that subsequents reads