aboutsummaryrefslogtreecommitdiff
path: root/libffi/src/powerpc/linux64.S
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2006-03-23 23:15:46 +0000
committerAlan Modra <amodra@bigpond.net.au>2006-03-23 23:15:46 +0000
commitb25fe396eb45371b3d1af2ddb23c74f47515a952 (patch)
tree4ab557369299e8f713970f1befc75244eeb8c26a /libffi/src/powerpc/linux64.S
parent909e5dc93e42fc3d6bdcc1b4e53fb332343e60e2 (diff)
* src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX. Default
for 32-bit using IBM extended double format. Fix FFI_LAST_ABI. * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of FFI_TYPE_LONGDOUBLE. (ffi_prep_args64): Assert using IBM extended double. (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type. Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. (ffi_call): Handle FFI_LINUX. (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs gpr3 return pointer as for struct return. Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args. Don't increment "nf" unnecessarily. * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2 for FFI_TYPE_LONGDOUBLE. Move epilogue insns into case table. Don't use r6 as pointer to results, instead use sp offset. Don't make a special call to load lr with case table address, instead use offset from previous call. * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return. * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double return. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@112340 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libffi/src/powerpc/linux64.S')
-rw-r--r--libffi/src/powerpc/linux64.S5
1 files changed, 1 insertions, 4 deletions
diff --git a/libffi/src/powerpc/linux64.S b/libffi/src/powerpc/linux64.S
index 25b2c4f455b..d72912da1ed 100644
--- a/libffi/src/powerpc/linux64.S
+++ b/libffi/src/powerpc/linux64.S
@@ -120,12 +120,9 @@ ffi_call_LINUX64:
blr
.Lfp_return_value:
- bt 27, .Lfd_return_value
bf 28, .Lfloat_return_value
stfd %f1, 0(%r30)
- b .Ldone_return_value
-.Lfd_return_value:
- stfd %f1, 0(%r30)
+ bf 27, .Ldone_return_value
stfd %f2, 8(%r30)
b .Ldone_return_value
.Lfloat_return_value: