This separates the 32-bit sysv/linux/bsd code from the 64-bit linux
authorAlan Modra <amodra@gmail.com>
Thu, 21 Nov 2013 11:12:35 +0000 (06:12 -0500)
committerAnthony Green <green@moxielogic.com>
Thu, 21 Nov 2013 11:12:35 +0000 (06:12 -0500)
commitac7536889334d4be50709006d7e23536364d7891
treef829dbf38044afa4e7a95a1ab9f952c1e9b06af1
parent69df91cfb4fa6bcb644350a80bff970f27478a6a
This separates the 32-bit sysv/linux/bsd code from the 64-bit linux
code, and makes it possible to link code compiled with different
options to those used to compile libffi.  For example, a
-mlong-double-128 libffi can be used with -mlong-double-64 code.

Using the return value area as a place to pass parameters wasn't such
a good idea, causing a failure of cls_ulonglong.c.  I didn't see this
when running the mainline gcc libffi testsuite because that version of
the test is inferior to the upstreamm libffi test.

Using NUM_FPR_ARG_REGISTERS rather than NUM_FPR_ARG_REGISTERS64 meant
that a parameter save area could be allocated before it was strictly
necessary.  Wrong but harmless.  Found when splitting apart ffi.c
into 32-bit and 64-bit support.
20 files changed:
ChangeLog
Makefile.am
Makefile.in
configure
configure.ac
include/Makefile.in
include/ffi.h.in
man/Makefile.in
src/powerpc/ffi.c
src/powerpc/ffi_linux64.c [new file with mode: 0644]
src/powerpc/ffi_powerpc.h [new file with mode: 0644]
src/powerpc/ffi_sysv.c [new file with mode: 0644]
src/powerpc/ffitarget.h
src/powerpc/linux64.S
src/powerpc/linux64_closure.S
src/powerpc/ppc_closure.S
src/powerpc/sysv.S
src/prep_cif.c
src/types.c
testsuite/Makefile.in