Commit 962eea0a by Andrew Haley Committed by Andrew Haley

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
parent 1b05e8bf
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> 2005-02-23 Andreas Tobler <a.tobler@schweiz.ch>
PR libffi/20104 PR libffi/20104
......
...@@ -573,10 +573,14 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif) ...@@ -573,10 +573,14 @@ ffi_status ffi_prep_cif_machdep(ffi_cif *cif)
/* 'long long' arguments are passed as two words, but /* 'long long' arguments are passed as two words, but
either both words must fit in registers or both go either both words must fit in registers or both go
on the stack. If they go on the stack, they must 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 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++;
intarg_count += 2; intarg_count += 2;
break; break;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment