summaryrefslogtreecommitdiff
path: root/libffi
diff options
context:
space:
mode:
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-26 18:29:21 +0000
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>2012-08-26 18:29:21 +0000
commit41ae7437ee22acfde7546d26dcf5dac0cb27a16e (patch)
tree4a5265d835ee1144faf4e115e30fb311bae8eb86 /libffi
parentdc71ce5ee3e862cca6d69fb7581ec07feb659cc8 (diff)
downloadgcc-41ae7437ee22acfde7546d26dcf5dac0cb27a16e.tar.gz
2012-08-26 Andrew Pinski <apinski@cavium.com>
PR libffi/53014 * src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with soft-float. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@190696 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libffi')
-rw-r--r--libffi/ChangeLog6
-rw-r--r--libffi/src/mips/ffi.c11
2 files changed, 15 insertions, 2 deletions
diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index f66a84927e8..73599767c25 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,9 @@
+2012-08-26 Andrew Pinski <apinski@cavium.com>
+
+ PR libffi/53014
+ * src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with
+ soft-float.
+
2012-08-08 Uros Bizjak <ubizjak@gmail.com>
* src/s390/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
diff --git a/libffi/src/mips/ffi.c b/libffi/src/mips/ffi.c
index 79cff9b5304..03121e39222 100644
--- a/libffi/src/mips/ffi.c
+++ b/libffi/src/mips/ffi.c
@@ -670,9 +670,16 @@ ffi_prep_closure_loc (ffi_closure *closure,
if (cif->abi != FFI_O32 && cif->abi != FFI_O32_SOFT_FLOAT)
return FFI_BAD_ABI;
fn = ffi_closure_O32;
-#else /* FFI_MIPS_N32 */
- if (cif->abi != FFI_N32 && cif->abi != FFI_N64)
+#else
+#if _MIPS_SIM ==_ABIN32
+ if (cif->abi != FFI_N32
+ && cif->abi != FFI_N32_SOFT_FLOAT)
+ return FFI_BAD_ABI;
+#else
+ if (cif->abi != FFI_N64
+ && cif->abi != FFI_N64_SOFT_FLOAT)
return FFI_BAD_ABI;
+#endif
fn = ffi_closure_N32;
#endif /* FFI_MIPS_O32 */