[x264-devel] [PATCH 2/2] arm: fix register clobber check for ios

Janne Grunau janne-x264 at jannau.net
Tue Oct 13 23:50:12 CEST 2015


r9 is a volatile register in the ios ABI. It will 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 | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/tools/checkasm-arm.S b/tools/checkasm-arm.S
index 35de22c..76c5c74 100644
--- a/tools/checkasm-arm.S
+++ b/tools/checkasm-arm.S
@@ -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
-- 
2.6.1



More information about the x264-devel mailing list