Fix cmpxchg16b-based compare_double_and_swap_double for SunCC/x86_64
authorIvan Maidanski <ivmai@mail.ru>
Tue, 18 Sep 2012 15:03:19 +0000 (19:03 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 25 Sep 2012 13:45:34 +0000 (17:45 +0400)
* src/atomic_ops/sysdeps/sunc/x86_64.h
(AO_compare_double_and_swap_double_full): Fix inline assembly
arguments commenting out "m"(*addr) one (similar to that in
sunc/x86.h) if AO_CMPXCHG16B_AVAILABLE defined.

src/atomic_ops/sysdeps/sunc/x86_64.h

index fbd50c0..e0f7987 100644 (file)
@@ -180,7 +180,7 @@ AO_compare_double_and_swap_double_full (volatile AO_double_t *addr,
   char result;
   __asm__ __volatile__ ("lock; cmpxchg16b %0; setz %1"
                         : "=m"(*addr), "=a"(result)
-                        : "m"(*addr), "d" (old_val2), "a" (old_val1),
+                        : /* "m" (*addr), */ "d" (old_val2), "a" (old_val1),
                           "c" (new_val2), "b" (new_val1) : "memory");
   return (int) result;
 }