summaryrefslogtreecommitdiff
path: root/libffi/src
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-11 18:16:37 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-11 18:16:37 +0000
commitd03e800cca37fa8e86bc70f6cbddc39856bfa0e1 (patch)
tree85a96b3cc4ba338824f1ca5374bf6aca87a9e18f /libffi/src
parent193fbd01c1e470d7b96cbae30b8b35d5bfd400fa (diff)
downloadgcc-d03e800cca37fa8e86bc70f6cbddc39856bfa0e1.tar.gz
2000-05-11 Scott Bambrough <scottb@netwinder.org>
* libffi/src/arm/sysv.S (ffi_call_SYSV): Doubles are not saved to memory correctly. Use conditional instructions, not branches where possible. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33852 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libffi/src')
-rw-r--r--libffi/src/arm/sysv.S16
1 files changed, 5 insertions, 11 deletions
diff --git a/libffi/src/arm/sysv.S b/libffi/src/arm/sysv.S
index 14230c4b25f..874b80a24ae 100644
--- a/libffi/src/arm/sysv.S
+++ b/libffi/src/arm/sysv.S
@@ -97,19 +97,13 @@ ENTRY(ffi_call_SYSV)
beq epilogue
# return FLOAT
- cmp a4, #FFI_TYPE_FLOAT
- bne retdouble
- stfs f0, [a3]
- b epilogue
+ cmp a4, #FFI_TYPE_FLOAT
+ stfeqs f0, [a3]
+ beq epilogue
# return DOUBLE or LONGDOUBLE
-retdouble:
- cmp a4, #FFI_TYPE_DOUBLE
- bne epilogue
-
- stfs f0, [a3, #0]
- stfs f1, [a3, #4]
- b epilogue
+ cmp a4, #FFI_TYPE_DOUBLE
+ stfeqd f0, [a3]
epilogue:
ldmfd sp!, {a1-a4, fp, pc}