public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in media-sound/pulseaudio/files: pulseaudio-0.9.21-armv5-build-fix.patch
@ 2010-11-27  6:52 Arun Raghavan (ford_prefect)
  0 siblings, 0 replies; only message in thread
From: Arun Raghavan (ford_prefect) @ 2010-11-27  6:52 UTC (permalink / raw
  To: gentoo-commits

ford_prefect    10/11/27 06:52:54

  Added:                pulseaudio-0.9.21-armv5-build-fix.patch
  Log:
  Add a patch to fix compilation on ARMv5. Adding to stable candidate and 2 most recent ebuilds. 0.9.21.2 and 0.9.21.2-r1 can be removed after a newer version is keyworded on arm.
  
  (Portage version: 2.2.0_alpha4/cvs/Linux x86_64)

Revision  Changes    Path
1.1                  media-sound/pulseaudio/files/pulseaudio-0.9.21-armv5-build-fix.patch

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-sound/pulseaudio/files/pulseaudio-0.9.21-armv5-build-fix.patch?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/media-sound/pulseaudio/files/pulseaudio-0.9.21-armv5-build-fix.patch?rev=1.1&content-type=text/plain

Index: pulseaudio-0.9.21-armv5-build-fix.patch
===================================================================
From e5b136fc0fde751df3a94cd64855a74732dd4cc7 Mon Sep 17 00:00:00 2001
From: Arun Raghavan <arun.raghavan@collabora.co.uk>
Date: Fri, 26 Nov 2010 11:55:57 +0530
Subject: [PATCH] volume: Add explicit checks for ARMv6 instructions

This ensures that the build does not fail if the ssat and pkhbt
instructions are not available (armv5te and below).

Fixes: http://www.pulseaudio.org/ticket/790
---
 configure.ac                |   33 ++++++++++++++++++++++++++++++++-
 src/pulsecore/svolume_arm.c |    8 ++++----
 2 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/configure.ac b/configure.ac
index 7ab42dc..3df8c6b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -230,7 +230,7 @@ else
                     [pulseaudio_cv_support_arm_atomic_ops=no])
                  ])
                AS_IF([test "$pulseaudio_cv_support_arm_atomic_ops" = "yes"], [
-                   AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARMv6 instructions.])
+                   AC_DEFINE([ATOMIC_ARM_INLINE_ASM], 1, [Have ARM atomic instructions.])
                    need_libatomic_ops=no
                  ])
            fi
@@ -249,6 +249,37 @@ else
     esac
 fi
 
+# If we're on ARM, check for the ARMV6 instructions we need */
+case $host in
+  arm*)
+    AC_CACHE_CHECK([support for required armv6 instructions],
+      pulseaudio_cv_support_armv6,
+      [AC_COMPILE_IFELSE(
+         AC_LANG_PROGRAM([],
+           [[volatile int a = -60000, b = 0xaaaabbbb, c = 0xccccdddd;
+             asm volatile ("ldr r0, %2 \n"
+                           "ldr r2, %3 \n"
+                           "ldr r3, %4 \n"
+                           "ssat r1, #8, r0 \n"
+                           "str r1, %0 \n"
+                           "pkhbt r1, r3, r2, LSL #8 \n"
+                           "str r1, %1 \n"
+                           : "=m" (a), "=m" (b)
+                           : "m" (a), "m" (b), "m" (c)
+                           : "r0", "r1", "r2", "r3", "cc");
+             return (a == -128 && b == 0xaabbdddd) ? 0 : -1;
+           ]]),
+         [pulseaudio_cv_support_armv6=yes],
+         [pulseaudio_cv_support_armv6=no])
+      ])
+    AS_IF([test "$pulseaudio_cv_support_armv6" = "yes"], [
+        AC_DEFINE([HAVE_ARMV6], 1, [Have ARMv6 instructions.])
+      ])
+  ;;
+  *)
+  ;;
+esac
+
 CC_CHECK_TLS
 
 AC_CACHE_CHECK([whether $CC knows _Bool],
diff --git a/src/pulsecore/svolume_arm.c b/src/pulsecore/svolume_arm.c
index fdd8f09..3973e51 100644
--- a/src/pulsecore/svolume_arm.c
+++ b/src/pulsecore/svolume_arm.c
@@ -35,7 +35,7 @@
 #include "sample-util.h"
 #include "endianmacros.h"
 
-#if defined (__arm__)
+#if defined (__arm__) && defined (HAVE_ARMV6)
 
 #define MOD_INC() \
     " subs  r0, r6, %2              \n\t" \
@@ -182,11 +182,11 @@ static void run_test (void) {
 }
 #endif
 
-#endif /* defined (__arm__) */
+#endif /* defined (__arm__) && defined (HAVE_ARMV6) */
 
 
 void pa_volume_func_init_arm (pa_cpu_arm_flag_t flags) {
-#if defined (__arm__)
+#if defined (__arm__) && defined (HAVE_ARMV6)
     pa_log_info("Initialising ARM optimized functions.");
 
 #ifdef RUN_TEST
@@ -194,5 +194,5 @@ void pa_volume_func_init_arm (pa_cpu_arm_flag_t flags) {
 #endif
 
     pa_set_volume_func (PA_SAMPLE_S16NE,     (pa_do_volume_func_t) pa_volume_s16ne_arm);
-#endif /* defined (__arm__) */
+#endif /* defined (__arm__) && defined (HAVE_ARMV6) */
 }
-- 
1.7.3.2







^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2010-11-27  6:53 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-27  6:52 [gentoo-commits] gentoo-x86 commit in media-sound/pulseaudio/files: pulseaudio-0.9.21-armv5-build-fix.patch Arun Raghavan (ford_prefect)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox