summaryrefslogtreecommitdiff
path: root/libffi/src/powerpc/darwin.S
diff options
context:
space:
mode:
authorandreast <andreast@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-02 21:14:45 +0000
committerandreast <andreast@138bc75d-0d04-0410-961f-82ee72b054a4>2004-09-02 21:14:45 +0000
commitde7fad366d4a7a566a014e138f6f69564a7bce52 (patch)
treeeec92a0c95c7e91b95c4b2c40388a3ca9fc89d8b /libffi/src/powerpc/darwin.S
parent8bf7bfd1617132ccc5418f75a804ea2f9adfb799 (diff)
downloadgcc-de7fad366d4a7a566a014e138f6f69564a7bce52.tar.gz
2004-09-02 Andreas Tobler <a.tobler@schweiz.ch>
* src/powerpc/ffi_darwin.c: Add flag for longdouble return values. (ffi_prep_args): Handle longdouble arguments. (ffi_prep_cif_machdep): Set flags for longdouble. Calculate space for longdouble. (ffi_closure_helper_DARWIN): Add closure handling for longdouble. * src/powerpc/darwin.S (_ffi_call_DARWIN): Add handling of longdouble values. * src/powerpc/darwin_closure.S (_ffi_closure_ASM): Likewise. * src/types.c: Defined longdouble size and alignment for darwin. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86992 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libffi/src/powerpc/darwin.S')
-rw-r--r--libffi/src/powerpc/darwin.S16
1 files changed, 14 insertions, 2 deletions
diff --git a/libffi/src/powerpc/darwin.S b/libffi/src/powerpc/darwin.S
index cbbac960d4a..771238c5b7c 100644
--- a/libffi/src/powerpc/darwin.S
+++ b/libffi/src/powerpc/darwin.S
@@ -1,5 +1,6 @@
/* -----------------------------------------------------------------------
darwin.S - Copyright (c) 2000 John Hornkvist
+ Copyright (c) 2004 Free Software Foundation, Inc.
PowerPC Assembly glue.
@@ -142,12 +143,23 @@ L(done_return_value):
blr
L(fp_return_value):
+ /* Do we have long double to store? */
+ bf 31,L(fd_return_value)
+ stfd f1,0(r30)
+ stfd f2,8(r30)
+ b L(done_return_value)
+
+L(fd_return_value):
+ /* Do we have double to store? */
bf 28,L(float_return_value)
stfd f1,0(r30)
b L(done_return_value)
+
L(float_return_value):
+ /* We only have a float to store. */
stfs f1,0(r30)
b L(done_return_value)
+
LFE1:
/* END(_ffi_call_DARWIN) */
@@ -218,6 +230,6 @@ LASFDE1:
.align 2
LEFDE1:
.data
- .align 2
+ .align 2
LLFB0$non_lazy_ptr:
- .long LFB0
+ .long LFB0