diff options
author | Alan Modra <amodra@bigpond.net.au> | 2006-03-23 23:15:46 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2006-03-23 23:15:46 +0000 |
commit | b25fe396eb45371b3d1af2ddb23c74f47515a952 (patch) | |
tree | 4ab557369299e8f713970f1befc75244eeb8c26a /libffi/src/powerpc/linux64.S | |
parent | 909e5dc93e42fc3d6bdcc1b4e53fb332343e60e2 (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.S | 5 |
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: |