sparc: Re-add abi compliant structure support
authorRichard Henderson <rth@twiddle.net>
Sun, 26 Oct 2014 22:29:04 +0000 (15:29 -0700)
committerRichard Henderson <rth@twiddle.net>
Wed, 12 Nov 2014 08:36:11 +0000 (09:36 +0100)
commit6eec410f1512d0584276db5f4b83711330e830d7
tree601345d995bf744cd21c70a8a2e7ced6e993d503
parent92022496ef7a9439f48a2ef11e460c300ac863d7
sparc: Re-add abi compliant structure support

The original code, removed in the "rewrite" patch, was incorrect for
large structures, and required dynamic allocation of a trampoline on
every ffi_call.

Instead, allocate a 4k entry table of all possible structure returns.
The table is 80k, but is read-only and dynamically paged, which ought
to be better than allocating the trampoline.

This is difficult to test with gcc.  One can only use -O0 at present.
See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63668.
src/sparc/ffi.c
src/sparc/ffi64.c
src/sparc/internal.h
src/sparc/v8.S
src/sparc/v9.S