diff --git a/tests/checkasm/arm/checkasm.S b/tests/checkasm/arm/checkasm.S index 2768bb3e74..ab53d0ac06 100644 --- a/tests/checkasm/arm/checkasm.S +++ b/tests/checkasm/arm/checkasm.S @@ -40,7 +40,7 @@ const register_init, align=3 endconst const error_message_fpscr - .asciz "failed to preserve register FPSCR" + .asciz "failed to preserve register FPSCR, changed bits: %x" error_message_gpr: .asciz "failed to preserve register r%d" error_message_vfp: @@ -106,11 +106,13 @@ function checkasm_checked_call_\variant, export=1 .endr .purgem check_reg_vfp - fmrx r0, FPSCR + fmrx r1, FPSCR ldr r3, [sp, #8] - eor r0, r0, r3 + eor r1, r1, r3 + @ Ignore changes in bits 0-4 and 7 + bic r1, r1, #0x9f @ Ignore changes in the topmost 5 bits - lsls r0, r0, #5 + bics r1, r1, #0xf8000000 bne 3f .endif