diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2013-08-17 13:58:59 +0400 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2013-08-18 12:19:13 +0400 |
commit | b60ce287b2fdd12a522932f5707b320cba181904 (patch) | |
tree | fa3705f620911d7e1d5d703d8345df64412963c9 | |
parent | a5c19ac61c311fb0bbe731a236a46c994339011c (diff) |
Fix ARM double-CAS operands width (GCC/Clang)
(Apply commit a81940c from 'master' branch.)
* src/atomic_ops/sysdeps/gcc/arm.h (AO_double_compare_and_swap): Swap
assembly code operands ("new_val" and "addr") to prevent
Clang3.3 warning about operand truncation.
Conflicts:
src/atomic_ops/sysdeps/gcc/arm.h
-rw-r--r-- | src/atomic_ops/sysdeps/gcc/arm.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/atomic_ops/sysdeps/gcc/arm.h b/src/atomic_ops/sysdeps/gcc/arm.h index 1c5af93..0aa5e7c 100644 --- a/src/atomic_ops/sysdeps/gcc/arm.h +++ b/src/atomic_ops/sysdeps/gcc/arm.h @@ -295,9 +295,9 @@ AO_compare_and_swap(volatile AO_t *addr, AO_t old_val, AO_t new_val) if (tmp != old_val) break; __asm__ __volatile__( - " strexd %0, %2, %H2, [%3]\n" /* store new one if matched */ + " strexd %0, %3, %H3, [%2]\n" /* store new one if matched */ : "=&r"(result), "+m"(*addr) - : "r"(new_val), "r"(addr) + : "r" (addr), "r" (new_val) : "cc"); } while (result); return !result; /* if succeded, return 1 else 0 */ |