--- 2.4.19rc1aa3/include/asm-i386/system.h.~1~ Wed Jul 10 21:02:15 2002 +++ 2.4.19rc1aa3/include/asm-i386/system.h Thu Jul 11 10:42:15 2002 @@ -151,6 +151,11 @@ struct __xchg_dummy { unsigned long a[10 * to do an SIMD/3DNOW!/MMX/FPU 64-bit store here, but that * might have an implicit FPU-save as a cost, so it's not * clear which path to go.) + * + * chmxchg8b must be used with the lock prefix here to allow + * the instruction to be executed atomically, see page 3-102 + * of the instruction set reference 24319102.pdf. We need + * the reader side to see the coherent 64bit value. */ static inline void __set_64bit (unsigned long long * ptr, unsigned int low, unsigned int high) @@ -159,7 +164,7 @@ static inline void __set_64bit (unsigned "\n1:\t" "movl (%0), %%eax\n\t" "movl 4(%0), %%edx\n\t" - "cmpxchg8b (%0)\n\t" + "lock cmpxchg8b (%0)\n\t" "jnz 1b" : /* no outputs */ : "D"(ptr),