Make Helgrind test cases build on arm64-linux.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13878 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/helgrind/tests/tc07_hbl1.c b/helgrind/tests/tc07_hbl1.c
index 92c74e0..be62337 100644
--- a/helgrind/tests/tc07_hbl1.c
+++ b/helgrind/tests/tc07_hbl1.c
@@ -13,6 +13,7 @@
 #undef PLAT_ppc32_linux
 #undef PLAT_ppc64_linux
 #undef PLAT_arm_linux
+#undef PLAT_arm64_linux
 #undef PLAT_s390x_linux
 #undef PLAT_mips32_linux
 
@@ -28,8 +29,10 @@
 #  define PLAT_ppc32_linux 1
 #elif defined(__linux__) && defined(__powerpc__) && defined(__powerpc64__)
 #  define PLAT_ppc64_linux 1
-#elif defined(__linux__) && defined(__arm__)
+#elif defined(__linux__) && defined(__arm__) && !defined(__aarch64__)
 #  define PLAT_arm_linux 1
+#elif defined(__linux__) && defined(__aarch64__) && !defined(__arm__)
+#  define PLAT_arm64_linux 1
 #elif defined(__linux__) && defined(__s390x__)
 #  define PLAT_s390x_linux 1
 #elif defined(__linux__) && defined(__mips__)
@@ -64,6 +67,18 @@
       : /*out*/ : /*in*/ "r"(&(_lval))       \
       : /*trash*/ "r8", "r9", "cc", "memory" \
   );
+#elif defined(PLAT_arm64_linux)
+#  define INC(_lval,_lqual) \
+  __asm__ __volatile__( \
+      "1:\n"                                 \
+      "        ldxr  w8, [%0, #0]\n"         \
+      "        add   w8, w8, #1\n"           \
+      "        stxr  w9, w8, [%0, #0]\n"     \
+      "        cmp   w9, #0\n"               \
+      "        bne   1b\n"                   \
+      : /*out*/ : /*in*/ "r"(&(_lval))       \
+      : /*trash*/ "x8", "x9", "cc", "memory" \
+  );
 #elif defined(PLAT_s390x_linux)
 #  define INC(_lval,_lqual) \
    __asm__ __volatile__( \