re PR libffi/20104 (gij fails on ppc and not on x86)

2005-02-22  Andrew Haley  <aph@redhat.com>

	PR libffi/20104
        * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
        odd-numbered register pairs for 64-bit integer types.

From-SVN: r95455
This commit is contained in:
Andrew Haley 2005-02-23 14:05:13 +00:00 committed by Andrew Haley
parent 1b05e8bf3c
commit 962eea0a03
2 changed files with 12 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2005-02-22 Andrew Haley <aph@redhat.com>
* src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
odd-numbered register pairs for 64-bit integer types.
2005-02-23 Andreas Tobler <a.tobler@schweiz.ch>
PR libffi/20104

View File

@ -573,10 +573,14 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
/* 'long long' arguments are passed as two words, but
either both words must fit in registers or both go
on the stack. If they go on the stack, they must
be 8-byte-aligned. */
be 8-byte-aligned.
Also, only certain register pairs can be used for
passing long long int -- specifically (r3,r4), (r5,r6),
(r7,r8), (r9,r10).
*/
if (intarg_count == NUM_GPR_ARG_REGISTERS-1
|| (intarg_count >= NUM_GPR_ARG_REGISTERS
&& intarg_count%2 != 0))
|| intarg_count%2 != 0)
intarg_count++;
intarg_count += 2;
break;