Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Unity-Technologies/libatomic_ops.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2013-08-17 13:58:59 +0400
committerIvan Maidanski <ivmai@mail.ru>2013-08-18 12:19:13 +0400
commitb60ce287b2fdd12a522932f5707b320cba181904 (patch)
treefa3705f620911d7e1d5d703d8345df64412963c9
parenta5c19ac61c311fb0bbe731a236a46c994339011c (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.h4
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 */