51 lines
2.2 KiB
Diff
51 lines
2.2 KiB
Diff
|
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;
|