summaryrefslogtreecommitdiff
path: root/data/libffi/vfpfp.diff
diff options
context:
space:
mode:
Diffstat (limited to 'data/libffi/vfpfp.diff')
-rw-r--r--data/libffi/vfpfp.diff61
1 files changed, 61 insertions, 0 deletions
diff --git a/data/libffi/vfpfp.diff b/data/libffi/vfpfp.diff
new file mode 100644
index 000000000..4713be660
--- /dev/null
+++ b/data/libffi/vfpfp.diff
@@ -0,0 +1,61 @@
+diff -ru gcc/libffi/src/arm/sysv.S gcc+iPhone/libffi/src/arm/sysv.S
+--- gcc/libffi/src/arm/sysv.S 2007-09-04 17:52:45.000000000 +0000
++++ gcc+iPhone/libffi/src/arm/sysv.S 2008-09-07 12:59:53.000000000 +0000
+@@ -188,7 +188,7 @@
+
+ @ return INT
+ cmp r3, #FFI_TYPE_INT
+-#ifdef __SOFTFP__
++#if defined(__SOFTFP__) || defined(__VFP_FP__)
+ cmpne r3, #FFI_TYPE_FLOAT
+ #endif
+ streq r0, [r2]
+@@ -196,12 +196,12 @@
+
+ @ return INT64
+ cmp r3, #FFI_TYPE_SINT64
+-#ifdef __SOFTFP__
++#if defined(__SOFTFP__) || defined(__VFP_FP__)
+ cmpne r3, #FFI_TYPE_DOUBLE
+ #endif
+ stmeqia r2, {r0, r1}
+
+-#ifndef __SOFTFP__
++#if !defined(__SOFTFP__) && !defined(__VFP_FP__)
+ beq LSYM(Lepilogue)
+
+ @ return FLOAT
+@@ -244,21 +244,21 @@
+ beq .Lretint
+
+ cmp r0, #FFI_TYPE_FLOAT
+-#ifdef __SOFTFP__
++#if defined(__SOFTFP__) || defined(__VFP_FP__)
+ beq .Lretint
+ #else
+ beq .Lretfloat
+ #endif
+
+ cmp r0, #FFI_TYPE_DOUBLE
+-#ifdef __SOFTFP__
++#if defined(__SOFTFP__) || defined(__VFP_FP__)
+ beq .Lretlonglong
+ #else
+ beq .Lretdouble
+ #endif
+
+ cmp r0, #FFI_TYPE_LONGDOUBLE
+-#ifdef __SOFTFP__
++#if defined(__SOFTFP__) || defined(__VFP_FP__)
+ beq .Lretlonglong
+ #else
+ beq .Lretlongdouble
+@@ -277,7 +277,7 @@
+ ldr r1, [sp, #4]
+ b .Lclosure_epilogue
+
+-#ifndef __SOFTFP__
++#if !defined(__SOFTFP__) && !defined(__VFP_FP__)
+ .Lretfloat:
+ ldfs f0, [sp]
+ b .Lclosure_epilogue