Merged revisions 78968-78969 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r78968 | matthias.klose | 2010-03-15 01:02:36 +0100 (Mon, 15 Mar 2010) | 226 lines

  - Issue #8142: Update libffi to the 3.0.9 release.
........
  r78969 | matthias.klose | 2010-03-15 01:36:18 +0100 (Mon, 15 Mar 2010) | 7 lines

  Backport from the libffi trunk:

  2010-02-15  Matthias Klose  <doko@ubuntu.com>

          * src/arm/sysv.S (__ARM_ARCH__): Define for processor
          __ARM_ARCH_7EM__.
........
diff --git a/Modules/_ctypes/libffi/src/arm/sysv.S b/Modules/_ctypes/libffi/src/arm/sysv.S
index 34481c8..9064318 100644
--- a/Modules/_ctypes/libffi/src/arm/sysv.S
+++ b/Modules/_ctypes/libffi/src/arm/sysv.S
@@ -67,11 +67,19 @@
 
 #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__) \
+	|| defined(__ARM_ARCH_7EM__)
+# undef __ARM_ARCH__
+# define __ARM_ARCH__ 7
+#endif
+
 #if __ARM_ARCH__ >= 5
 # define call_reg(x)	blx	x
 #elif defined (__ARM_ARCH_4T__)
@@ -189,7 +197,7 @@
 
 @ return INT
 	cmp	r3, #FFI_TYPE_INT
-#ifdef __SOFTFP__
+#if defined(__SOFTFP__) || defined(__ARM_EABI__)
 	cmpne	r3, #FFI_TYPE_FLOAT
 #endif
 	streq	r0, [r2]
@@ -197,12 +205,12 @@
 
 	@ 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
@@ -245,21 +253,21 @@
 	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
@@ -278,7 +286,7 @@
 	ldr	r1, [sp, #4]
 	b	.Lclosure_epilogue
 
-#ifndef __SOFTFP__
+#if !defined(__SOFTFP__) && !defined(__ARM_EABI__)
 .Lretfloat:
 	ldfs	f0, [sp]
 	b	.Lclosure_epilogue