]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR libffi/40242, PR libffi/41443
authorMatthias Klose <doko@ubuntu.com>
Wed, 23 Sep 2009 15:11:17 +0000 (15:11 +0000)
committerMatthias Klose <doko@gcc.gnu.org>
Wed, 23 Sep 2009 15:11:17 +0000 (15:11 +0000)
2009-09-23  Matthias Klose  <doko@ubuntu.com>

        PR libffi/40242, PR libffi/41443
        * src/arm/sysv.S (__ARM_ARCH__): Define for processors
        __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
        __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
        Change the conditionals to __SOFTFP__ || __ARM_EABI__
        for -mfloat-abi=softfp to work.

From-SVN: r152079

libffi/ChangeLog
libffi/src/arm/sysv.S

index cd8e0a82b5d98ab1d62476801ec3313b20953353..7aceb9a5c9806ae1007e36eadb665e6afed7437e 100644 (file)
@@ -1,3 +1,12 @@
+2009-09-23  Matthias Klose  <doko@ubuntu.com>
+
+       PR libffi/40242, PR libffi/41443
+       * src/arm/sysv.S (__ARM_ARCH__): Define for processors
+       __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
+       __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
+       Change the conditionals to __SOFTFP__ || __ARM_EABI__
+       for -mfloat-abi=softfp to work.
+
 2009-08-04  Release Manager
 
        * GCC 4.3.4 released.
index 12876d1205435f6348e24a0c1ff186b44f5903bb..8c43d62d6131349949716b6c3f9de654d4eefd6e 100644 (file)
 
 #if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \
         || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \
-        || defined(__ARM_ARCH_6ZK__)
+        || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) \
+       || defined(__ARM_ARCH_6M__)
 # undef __ARM_ARCH__
 # define __ARM_ARCH__ 6
 #endif
 
+#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \
+        || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__)
+# undef __ARM_ARCH__
+# define __ARM_ARCH__ 7
+#endif
+
 #if __ARM_ARCH__ >= 5
 # define call_reg(x)   blx     x
 #elif defined (__ARM_ARCH_4T__)
@@ -188,7 +195,7 @@ ARM_FUNC_START ffi_call_SYSV
 
 @ return INT
        cmp     r3, #FFI_TYPE_INT
-#ifdef __SOFTFP__
+#if defined(__SOFTFP__) || defined(__ARM_EABI__)
        cmpne   r3, #FFI_TYPE_FLOAT
 #endif
        streq   r0, [r2]
@@ -196,12 +203,12 @@ ARM_FUNC_START ffi_call_SYSV
 
        @ return INT64
        cmp     r3, #FFI_TYPE_SINT64
-#ifdef __SOFTFP__
+#if defined(__SOFTFP__) || defined(__ARM_EABI__)
        cmpne   r3, #FFI_TYPE_DOUBLE
 #endif
        stmeqia r2, {r0, r1}
 
-#ifndef __SOFTFP__
+#if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
        beq     LSYM(Lepilogue)
 
 @ return FLOAT
@@ -244,21 +251,21 @@ ARM_FUNC_START ffi_closure_SYSV
        beq     .Lretint
 
        cmp     r0, #FFI_TYPE_FLOAT
-#ifdef __SOFTFP__
+#if defined(__SOFTFP__) || defined(__ARM_EABI__)
        beq     .Lretint
 #else
        beq     .Lretfloat
 #endif
 
        cmp     r0, #FFI_TYPE_DOUBLE
-#ifdef __SOFTFP__
+#if defined(__SOFTFP__) || defined(__ARM_EABI__)
        beq     .Lretlonglong
 #else
        beq     .Lretdouble
 #endif
 
        cmp     r0, #FFI_TYPE_LONGDOUBLE
-#ifdef __SOFTFP__
+#if defined(__SOFTFP__) || defined(__ARM_EABI__)
        beq     .Lretlonglong
 #else
        beq     .Lretlongdouble
@@ -277,7 +284,7 @@ ARM_FUNC_START ffi_closure_SYSV
        ldr     r1, [sp, #4]
        b       .Lclosure_epilogue
 
-#ifndef __SOFTFP__
+#if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
 .Lretfloat:
        ldfs    f0, [sp]
        b       .Lclosure_epilogue