-
- Downloads
ffitarget.h (enum ffi_abi): Add FFI_LINUX.
* 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. From-SVN: r112340
Showing
- libffi/ChangeLog 23 additions, 0 deletionslibffi/ChangeLog
- libffi/src/powerpc/ffi.c 96 additions, 27 deletionslibffi/src/powerpc/ffi.c
- libffi/src/powerpc/ffitarget.h 6 additions, 1 deletionlibffi/src/powerpc/ffitarget.h
- libffi/src/powerpc/linux64.S 1 addition, 4 deletionslibffi/src/powerpc/linux64.S
- libffi/src/powerpc/ppc_closure.S 91 additions, 131 deletionslibffi/src/powerpc/ppc_closure.S
- libffi/src/powerpc/sysv.S 2 additions, 0 deletionslibffi/src/powerpc/sysv.S
Loading
Please register or sign in to comment