From cfb87b0cf91ec18bd9d12a7c400137ebf4b73fad Mon Sep 17 00:00:00 2001 From: David Chisnall Date: Sun, 27 Dec 2015 16:09:16 +0100 Subject: [PATCH] Preserve floating point argument registers across calls out to the slow path. --- objc_msgSend.arm.S | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/objc_msgSend.arm.S b/objc_msgSend.arm.S index b30bd83..7f924c6 100644 --- a/objc_msgSend.arm.S +++ b/objc_msgSend.arm.S @@ -93,6 +93,12 @@ push {\receiver} // &self, _cmd in arguments .save {\receiver} +#ifndef __SOFTFP__ + vpush {q0-q3} + .pad #64 +#endif + + mov r0, sp mov r1, \sel @@ -100,6 +106,9 @@ mov ip, r0 // IMP -> ip pop {r5} // restore (modified) self to r5 +#ifndef __SOFTFP__ + vpop {q0-q3} +#endif pop {r0-r4, lr} // Load clobbered registers mov \receiver, r5 b 3b