arm: Fix checkasm register clobber check on iOS
authorJanne Grunau <janne-x264@jannau.net>
Tue, 13 Oct 2015 21:50:12 +0000 (23:50 +0200)
committerHenrik Gramner <henrik@gramner.com>
Sat, 17 Oct 2015 12:07:44 +0000 (14:07 +0200)
r9 is a volatile register in the iOS ABI and will therefore not be
preserved by compiled functions like the luma motion compensation.

Add the symbol prefix to the puts() call and use blx since a switch
between arm and thumb mode might be required.

tools/checkasm-arm.S

index 35de22c..76c5c74 100644 (file)
@@ -99,16 +99,23 @@ function x264_checkasm_call_\variant
     mov         r3,  #0
 .endif
 
-.macro check_reg reg1, reg2
+.macro check_reg reg1, reg2=
     ldrd        r0,  r1,  [r12], #8
     eor         r0,  r0, \reg1
-    eor         r1,  r1, \reg2
     orr         r3,  r3, r0
+.ifnb \reg2
+    eor         r1,  r1, \reg2
     orr         r3,  r3, r1
+.endif
 .endm
     check_reg   r4,  r5
     check_reg   r6,  r7
+@ r9 is a volatile register in the ios ABI
+#if SYS_MACOSX
+    check_reg   r8
+#else
     check_reg   r8,  r9
+#endif
     check_reg   r10, r11
 .purgem check_reg
 
@@ -118,7 +125,7 @@ function x264_checkasm_call_\variant
     mov         r12, #0
     str         r12, [r2]
     movrel      r0, error_message
-    bl          puts
+    blx         X(puts)
 0:
     pop         {r0, r1}
 .ifc \variant, neon