]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Fix testcase for s390x. Provide implementation of XCHG_M_R.
authorFlorian Krohm <florian@eich-krohm.de>
Fri, 9 Sep 2011 18:37:55 +0000 (18:37 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Fri, 9 Sep 2011 18:37:55 +0000 (18:37 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12018

helgrind/tests/tc11_XCHG.c

index f7fe47ff7201dd6665eaab4abe8eab87e6021495..ac85d8280edb50a021c8dcb0de86df77cf42d29b 100644 (file)
         : "memory", "cc" \
      )
 
+#elif defined(PLAT_s390x_linux)
+#  define XCHG_M_R(_addr,_lval)                              \
+     do {                                                    \
+        __asm__ __volatile__(                                \
+           "0: l   0,%[global]\n\t"                          \
+           "   cs  0,%[local],%[global]\n\t"                 \
+           "   bne 0b\n\t"                                   \
+           "   lr  %[local],0\n\t"                           \
+           : /*out*/ [global]"+m"(_addr), [local]"+d"(_lval) \
+           : /*in*/                                          \
+           : "0", "memory", "cc"                             \
+        );                                                   \
+     } while (0)
+
+#  define XCHG_M_R_with_redundant_LOCK(_addr,_lval) \
+      XCHG_M_R(_addr,_lval)
+
 #elif defined(PLAT_ppc32_linux) || defined(PLAT_ppc64_linux) \
-      || defined(PLAT_arm_linux) || defined(PLAT_s390x_linux)
+      || defined(PLAT_arm_linux)
 #  if defined(HAVE_BUILTIN_ATOMIC)
 #    define XCHG_M_R(_addr,_lval)                                           \
         do {                                                                \