zbyszek / rpms / openmpi

Forked from rpms/openmpi 5 years ago
Clone
Blob Blame History Raw
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;