patch-2.4.20 linux-2.4.20/include/asm-i386/system.h
Next file: linux-2.4.20/include/asm-i386/termios.h
Previous file: linux-2.4.20/include/asm-i386/spinlock.h
Back to the patch index
Back to the overall index
- Lines: 21
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/include/asm-i386/system.h
- Orig date:
Thu Nov 22 11:46:18 2001
diff -urN linux-2.4.19/include/asm-i386/system.h linux-2.4.20/include/asm-i386/system.h
@@ -154,6 +154,11 @@
* 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)
@@ -162,7 +167,7 @@
"\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),
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)