Index: /trunk/opal/include/opal/sys/amd64/atomic.h =================================================================== --- /trunk/opal/include/opal/sys/amd64/atomic.h (revision 21180) +++ /trunk/opal/include/opal/sys/amd64/atomic.h (revision 22324) @@ -85,9 +85,9 @@ unsigned char ret; __asm__ __volatile__ ( - SMPLOCK "cmpxchgl %1,%2 \n\t" + SMPLOCK "cmpxchgl %3,%4 \n\t" "sete %0 \n\t" - : "=qm" (ret) - : "q"(newval), "m"(*addr), "a"(oldval) - : "memory"); + : "=qm" (ret), "=a" (oldval), "=m" (*addr) + : "q"(newval), "m"(*addr), "1"(oldval) + ); return (int)ret; @@ -106,9 +106,9 @@ unsigned char ret; __asm__ __volatile__ ( - SMPLOCK "cmpxchgq %1,%2 \n\t" + SMPLOCK "cmpxchgq %3,%4 \n\t" "sete %0 \n\t" - : "=qm" (ret) - : "q"(newval), "m"(*((volatile long*)addr)), "a"(oldval) - : "memory"); + : "=qm" (ret), "=a" (oldval), "=m" (*((volatile long*)addr)) + : "q"(newval), "m"(*((volatile long*)addr)), "1"(oldval) + ); return (int)ret; Index: /trunk/opal/include/opal/sys/ia32/atomic.h =================================================================== --- /trunk/opal/include/opal/sys/ia32/atomic.h (revision 21180) +++ /trunk/opal/include/opal/sys/ia32/atomic.h (revision 22324) @@ -92,9 +92,9 @@ unsigned char ret; __asm__ __volatile__ ( - SMPLOCK "cmpxchgl %1,%2 \n\t" + SMPLOCK "cmpxchgl %3,%4 \n\t" "sete %0 \n\t" - : "=qm" (ret) - : "q"(newval), "m"(*((volatile long*)addr)), "a"(oldval) - : "memory"); + : "=qm" (ret), "=a" (oldval), "=m" (*addr) + : "q"(newval), "m"(*((volatile long*)addr)), "1"(oldval) + ); return (int)ret;