diff mbox

src/arm/sysv.S: Fix ffi_call_VFP with no VFP arguments

Message ID 1390318359-4608-1-git-send-email-will.newton@linaro.org
State Accepted
Headers show

Commit Message

Will Newton Jan. 21, 2014, 3:32 p.m. UTC
When no VFP arguments are present the IP register is used
uninitialized. Initialize it to the value of FP.

This fixes a number of testsuite failures when configured for
armv7l-unknown-linux-gnueabihf:

FAIL: libffi.call/cls_3byte1.c -O0 -W -Wall execution test
FAIL: libffi.call/cls_3byte2.c -O0 -W -Wall execution test
FAIL: libffi.call/cls_4_1byte.c -O0 -W -Wall execution test
FAIL: libffi.call/cls_4byte.c -O0 -W -Wall execution test
FAIL: libffi.call/cls_3byte1.c -O2 execution test
FAIL: libffi.call/cls_3byte2.c -O2 execution test
FAIL: libffi.call/cls_4_1byte.c -O2 execution test
FAIL: libffi.call/cls_4byte.c -O2 execution test
FAIL: libffi.call/cls_3byte1.c -O3 execution test
FAIL: libffi.call/cls_3byte2.c -O3 execution test
FAIL: libffi.call/cls_4_1byte.c -O3 execution test
FAIL: libffi.call/cls_4byte.c -O3 execution test
FAIL: libffi.call/cls_3byte1.c -Os execution test
FAIL: libffi.call/cls_3byte2.c -Os execution test
FAIL: libffi.call/cls_4_1byte.c -Os execution test
FAIL: libffi.call/cls_4byte.c -Os execution test
FAIL: libffi.call/cls_3byte1.c -O2 -fomit-frame-pointer execution test
FAIL: libffi.call/cls_3byte2.c -O2 -fomit-frame-pointer execution test
FAIL: libffi.call/cls_4_1byte.c -O2 -fomit-frame-pointer execution test
FAIL: libffi.call/cls_4byte.c -O2 -fomit-frame-pointer execution test
---
 src/arm/sysv.S | 1 +
 1 file changed, 1 insertion(+)
diff mbox

Patch

diff --git a/src/arm/sysv.S b/src/arm/sysv.S
index 454dfc9..8ab6d63 100644
--- a/src/arm/sysv.S
+++ b/src/arm/sysv.S
@@ -368,6 +368,7 @@  ARM_FUNC_START ffi_call_VFP
 
 	@ Load VFP register args if needed
 	cmp	r0, #0
+	mov	ip, fp
 	beq	LSYM(Lbase_args)
 
 	@ Load only d0 if possible