diff options
author | Andrew Haley <aph@redhat.com> | 2005-02-23 14:05:13 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2005-02-23 14:05:13 +0000 |
commit | 962eea0a03f8d2f73937f82b7329e97824677920 (patch) | |
tree | 1e5002f9408d7d36ac5f7e50d98d9935198b19c9 | |
parent | 1b05e8bf3c1c63c7d9b069e876aadcba0ced9a5f (diff) | |
download | gcc-962eea0a03f8d2f73937f82b7329e97824677920.zip gcc-962eea0a03f8d2f73937f82b7329e97824677920.tar.gz gcc-962eea0a03f8d2f73937f82b7329e97824677920.tar.bz2 |
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
-rw-r--r-- | libffi/ChangeLog | 5 | ||||
-rw-r--r-- | libffi/src/powerpc/ffi.c | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 6de6ef5..83a1c2b 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -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 diff --git a/libffi/src/powerpc/ffi.c b/libffi/src/powerpc/ffi.c index c8d1887..67d945b 100644 --- a/libffi/src/powerpc/ffi.c +++ b/libffi/src/powerpc/ffi.c @@ -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; |