]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
do_vldm_vstm_check: don't use caller saved FP ('s') registers to hold
authorJulian Seward <jseward@acm.org>
Sat, 6 Aug 2016 12:32:37 +0000 (12:32 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 6 Aug 2016 12:32:37 +0000 (12:32 +0000)
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

none/tests/arm/vfp.c

index 7d7f0dc8cab344426a8ddab014b8de2ad7301a7a..c7360af63945d93be93291303780905ba1819754 100644 (file)
@@ -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");