From: Julian Seward Date: Sat, 6 Aug 2016 12:32:37 +0000 (+0000) Subject: do_vldm_vstm_check: don't use caller saved FP ('s') registers to hold X-Git-Tag: svn/VALGRIND_3_12_0~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bafba31e413d05f123a5e46f1e7ebc9f9c661fb8;p=thirdparty%2Fvalgrind.git do_vldm_vstm_check: don't use caller saved FP ('s') registers to hold data that we expect to stay alive over calls to printf. Fixes erratic failures of this test. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15931 --- diff --git a/none/tests/arm/vfp.c b/none/tests/arm/vfp.c index 7d7f0dc8ca..c7360af639 100644 --- a/none/tests/arm/vfp.c +++ b/none/tests/arm/vfp.c @@ -848,55 +848,55 @@ static void do_vldm_vstm_check(void) printf("do_vldm_vstm_check:\n"); __asm__ volatile( "mov r1, %0\n\t" - "vldmia r1!, {s0, s1, s2, s3}\n\t" + "vldmia r1!, {s16, s17, s18, s19}\n\t" "mov r0, %1\n\t" "sub r1, r1, %0\n\t" "mov r3, r1\n\t" "bl printf\n\t" "mov r0, %1\n\t" - "vmov r1, s2\n\t" + "vmov r1, s18\n\t" "mov r3, r1\n\t" "bl printf\n\t" "mov r0, %1\n\t" - "vmov r1, s3\n\t" + "vmov r1, s19\n\t" "mov r3, r1\n\t" "bl printf\n\t" "mov r0, %1\n\t" - "vmov r1, s0\n\t" + "vmov r1, s16\n\t" "mov r3, r1\n\t" "bl printf\n\t" /* --- */ "add r1, %0, #32\n\t" - "vldmdb r1!, {s5, s6}\n\t" + "vldmdb r1!, {s25, s26}\n\t" "mov r0, %1\n\t" "sub r1, r1, %0\n\t" "mov r3, r1\n\t" "bl printf\n\t" "mov r0, %1\n\t" - "vmov r1, s5\n\t" + "vmov r1, s25\n\t" "mov r3, r1\n\t" "bl printf\n\t" "mov r0, %1\n\t" - "vmov r1, s6\n\t" + "vmov r1, s26\n\t" "mov r3, r1\n\t" "bl printf\n\t" /* --- */ "add r1, %0, #4\n\t" - "vldmia r1, {s0, s1, s2, s3}\n\t" + "vldmia r1, {s20, s21, s22, s23}\n\t" "mov r0, %1\n\t" "sub r1, r1, %0\n\t" "mov r3, r1\n\t" "bl printf\n\t" "mov r0, %1\n\t" - "vmov r1, s2\n\t" + "vmov r1, s22\n\t" "mov r3, r1\n\t" "bl printf\n\t" "mov r0, %1\n\t" - "vmov r1, s3\n\t" + "vmov r1, s23\n\t" "mov r3, r1\n\t" "bl printf\n\t" "mov r0, %1\n\t" - "vmov r1, s0\n\t" + "vmov r1, s20\n\t" "mov r3, r1\n\t" "bl printf\n\t" /* --- */ @@ -970,15 +970,15 @@ static void do_vldm_vstm_check(void) "bl printf\n\t" /* --- */ "mov r0, #0x55\n\t" - "vmov s0, r0\n\t" + "vmov s20, r0\n\t" "mov r0, #0x56\n\t" - "vmov s1, r0\n\t" + "vmov s21, r0\n\t" "mov r0, #0x57\n\t" - "vmov s2, r0\n\t" + "vmov s22, r0\n\t" "mov r0, #0x58\n\t" - "vmov s3, r0\n\t" + "vmov s23, r0\n\t" "add r1, %0, #0\n\t" - "vstmia r1!, {s0, s1, s2, s3}\n\t" + "vstmia r1!, {s20, s21, s22, s23}\n\t" "mov r0, %1\n\t" "sub r1, r1, %0\n\t" "mov r3, r1\n\t" @@ -1044,7 +1044,8 @@ static void do_vldm_vstm_check(void) : : "r" (data), "r" (format), "r"(&res) : "r0", "r1", "r2", "r3", "r5", "r12", "r14", "memory", - "s0", "s1", "s2", "s3", "s5", "s6", "s16", "s17", + "s0", "s1", "s2", "s3", "s5", "s6", "s16", "s17", "s18", "s19", + "s20", "s21", "s22", "s23", "s25", "s26", "d10", "d30", "d31" ); printf("data:\n");