From 9f422c0cd9c0abcd6a7abb10b51f8be883c39b2b Mon Sep 17 00:00:00 2001 From: Janne Grunau Date: Tue, 13 Oct 2015 23:50:12 +0200 Subject: [PATCH] arm: Fix checkasm register clobber check on iOS 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 | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/checkasm-arm.S b/tools/checkasm-arm.S index 35de22c1..76c5c741 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.39.2