Correct powerpc sysv stack argument accounting
authorAlan Modra <amodra@gmail.com>
Mon, 3 Aug 2015 14:04:05 +0000 (23:34 +0930)
committerAlan Modra <amodra@gmail.com>
Mon, 3 Aug 2015 14:04:05 +0000 (23:34 +0930)
commit43fc5bca48715a522b34c1124589575063362a90
tree9e0f3e0d70fc06b19df08deb4301fb89292e6e25
parent17ffc3655a531c116e9eb9cc933e50bb1e5c47f8
Correct powerpc sysv stack argument accounting

ppc32 starts using the stack for integer arg passing when we run out
of integer arg passing registers.  Similarly, we start using the stack
for floating point args when we run out of floating point registers.
The decision on where an integer arg goes does not depend on number of
floating point args, nor does the decision on where a floating point
arg goes depend on number of integer args.  Alignment of stack args
also simply depends on number of stack args.

This patch untangles the horrible mess we had, with intarg_count being
wrongly used to count both integer args and stack words.

* src/powerpc/ffi_sysv.c (ffi_prep_cif_sysv_core): Count fprs,
gprs, and stack words separately.
(ffi_prep_args_SYSV): Similarly.
src/powerpc/ffi_sysv.c