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__( \