Add support for ARMv8 AArch64 (the 64 bit ARM instruction set).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13770 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_libcassert.c b/coregrind/m_libcassert.c
index d7706de..65a373e 100644
--- a/coregrind/m_libcassert.c
+++ b/coregrind/m_libcassert.c
@@ -136,6 +136,25 @@
(srP)->misc.ARM.r11 = block[4]; \
(srP)->misc.ARM.r7 = block[5]; \
}
+#elif defined(VGP_arm64_linux)
+# define GET_STARTREGS(srP) \
+ { ULong block[4]; \
+ __asm__ __volatile__( \
+ "adr x19, 0;" \
+ "str x19, [%0, #+0];" /* pc */ \
+ "mov x19, sp;" \
+ "str x19, [%0, #+8];" /* sp */ \
+ "str x29, [%0, #+16];" /* fp */ \
+ "str x30, [%0, #+24];" /* lr */ \
+ : /* out */ \
+ : /* in */ "r"(&block[0]) \
+ : /* trash */ "memory","x19" \
+ ); \
+ (srP)->r_pc = block[0]; \
+ (srP)->r_sp = block[1]; \
+ (srP)->misc.ARM64.x29 = block[2]; \
+ (srP)->misc.ARM64.x30 = block[3]; \
+ }
#elif defined(VGP_s390x_linux)
# define GET_STARTREGS(srP) \
{ ULong ia, sp, fp, lr; \