Patchwork [03/11] pulseaudio: fix compilation with x32 toolchain

login
register
mail settings
Submitter Nitin A Kamble
Date Dec. 8, 2011, 5:48 a.m.
Message ID <e9acca6af7f566be68a0d1f06ea2ec6a83a4a21d.1323323130.git.nitin.a.kamble@intel.com>
Download mbox | patch
Permalink /patch/16457/
State New
Headers show

Comments

Nitin A Kamble - Dec. 8, 2011, 5:48 a.m.
From: Nitin A Kamble <nitin.a.kamble@intel.com>

This commit makes assembly syntax compatible with x32 toolchain
to avoid x32 gcc errors.

Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
---
 .../pulseaudio/pulseaudo_fix_for_x32.patch         |  225 ++++++++++++++++++++
 .../pulseaudio/pulseaudio_1.1.bb                   |    3 +-
 2 files changed, 227 insertions(+), 1 deletions(-)
 create mode 100644 meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudo_fix_for_x32.patch

Patch

diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudo_fix_for_x32.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudo_fix_for_x32.patch
new file mode 100644
index 0000000..22fe2e7
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/pulseaudo_fix_for_x32.patch
@@ -0,0 +1,225 @@ 
+UpstreamStatus: Pending
+
+This patch makes assembly syntax compatible to the x32 toolchain.
+
+This fixes compilations errors with x32 gcc.
+
+Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/03
+Index: pulseaudio-1.1/src/pulsecore/svolume_mmx.c
+===================================================================
+--- pulseaudio-1.1.orig/src/pulsecore/svolume_mmx.c
++++ pulseaudio-1.1/src/pulsecore/svolume_mmx.c
+@@ -107,7 +107,7 @@ static void pa_volume_s16ne_mmx(int16_t 
+         " test $1, %2                   \n\t" /* check for odd samples */
+         " je 2f                         \n\t"
+ 
+-        " movd (%1, %3, 4), %%mm0       \n\t" /* |  v0h  |  v0l  | */
++        " movd (%q1, %3, 4), %%mm0       \n\t" /* |  v0h  |  v0l  | */
+         " movw (%0), %w4                \n\t" /*     ..  |  p0   | */
+         " movd %4, %%mm1                \n\t"
+         VOLUME_32x16 (%%mm1, %%mm0)
+@@ -122,7 +122,7 @@ static void pa_volume_s16ne_mmx(int16_t 
+         " je 4f                         \n\t"
+ 
+         "3:                             \n\t" /* do samples in groups of 2 */
+-        " movq (%1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
++        " movq (%q1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
+         " movd (%0), %%mm1              \n\t" /*              .. |   p1  |  p0   | */
+         VOLUME_32x16 (%%mm1, %%mm0)
+         " movd %%mm0, (%0)              \n\t" /*              .. | p1*v1 | p0*v0 | */
+@@ -135,8 +135,8 @@ static void pa_volume_s16ne_mmx(int16_t 
+         " je 6f                         \n\t"
+ 
+         "5:                             \n\t" /* do samples in groups of 4 */
+-        " movq (%1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
+-        " movq 8(%1, %3, 4), %%mm2      \n\t" /* |  v3h  |  v3l  |  v2h  |  v2l  | */
++        " movq (%q1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
++        " movq 8(%q1, %3, 4), %%mm2      \n\t" /* |  v3h  |  v3l  |  v2h  |  v2l  | */
+         " movd (%0), %%mm1              \n\t" /*              .. |   p1  |  p0   | */
+         " movd 4(%0), %%mm3             \n\t" /*              .. |   p3  |  p2   | */
+         VOLUME_32x16 (%%mm1, %%mm0)
+@@ -180,7 +180,7 @@ static void pa_volume_s16re_mmx(int16_t 
+         " test $1, %2                   \n\t" /* check for odd samples */
+         " je 2f                         \n\t"
+ 
+-        " movd (%1, %3, 4), %%mm0       \n\t" /* |  v0h  |  v0l  | */
++        " movd (%q1, %3, 4), %%mm0       \n\t" /* |  v0h  |  v0l  | */
+         " movw (%0), %w4                \n\t" /*     ..  |  p0   | */
+         " rorw $8, %w4                  \n\t"
+         " movd %4, %%mm1                \n\t"
+@@ -197,7 +197,7 @@ static void pa_volume_s16re_mmx(int16_t 
+         " je 4f                         \n\t"
+ 
+         "3:                             \n\t" /* do samples in groups of 2 */
+-        " movq (%1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
++        " movq (%q1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
+         " movd (%0), %%mm1              \n\t" /*              .. |   p1  |  p0   | */
+         SWAP_16 (%%mm1)
+         VOLUME_32x16 (%%mm1, %%mm0)
+@@ -212,8 +212,8 @@ static void pa_volume_s16re_mmx(int16_t 
+         " je 6f                         \n\t"
+ 
+         "5:                             \n\t" /* do samples in groups of 4 */
+-        " movq (%1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
+-        " movq 8(%1, %3, 4), %%mm2      \n\t" /* |  v3h  |  v3l  |  v2h  |  v2l  | */
++        " movq (%q1, %3, 4), %%mm0       \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
++        " movq 8(%q1, %3, 4), %%mm2      \n\t" /* |  v3h  |  v3l  |  v2h  |  v2l  | */
+         " movd (%0), %%mm1              \n\t" /*              .. |   p1  |  p0   | */
+         " movd 4(%0), %%mm3             \n\t" /*              .. |   p3  |  p2   | */
+         SWAP_16_2 (%%mm1, %%mm3)
+Index: pulseaudio-1.1/src/pulsecore/svolume_sse.c
+===================================================================
+--- pulseaudio-1.1.orig/src/pulsecore/svolume_sse.c
++++ pulseaudio-1.1/src/pulsecore/svolume_sse.c
+@@ -92,7 +92,7 @@ static void pa_volume_s16ne_sse2(int16_t
+         " test $1, %2                   \n\t" /* check for odd samples */
+         " je 2f                         \n\t"
+ 
+-        " movd (%1, %3, 4), %%xmm0      \n\t" /* |  v0h  |  v0l  | */
++        " movd (%q1, %3, 4), %%xmm0      \n\t" /* |  v0h  |  v0l  | */
+         " movw (%0), %w4                \n\t" /*     ..  |   p0  | */
+         " movd %4, %%xmm1               \n\t"
+         VOLUME_32x16 (%%xmm1, %%xmm0)
+@@ -107,7 +107,7 @@ static void pa_volume_s16ne_sse2(int16_t
+         " je 4f                         \n\t"
+ 
+         "3:                             \n\t" /* do samples in groups of 2 */
+-        " movq (%1, %3, 4), %%xmm0      \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
++        " movq (%q1, %3, 4), %%xmm0      \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
+         " movd (%0), %%xmm1             \n\t" /*              .. |   p1  |  p0   | */
+         VOLUME_32x16 (%%xmm1, %%xmm0)
+         " movd %%xmm0, (%0)             \n\t" /*              .. | p1*v1 | p0*v0 | */
+@@ -123,7 +123,7 @@ static void pa_volume_s16ne_sse2(int16_t
+          * that the array is 16 bytes aligned, we probably have to do the odd values
+          * after this then. */
+         "5:                             \n\t" /* do samples in groups of 4 */
+-        " movdqu (%1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h  |  v0l  | */
++        " movdqu (%q1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h  |  v0l  | */
+         " movq (%0), %%xmm1             \n\t" /*              .. |   p3  ..  p0   | */
+         VOLUME_32x16 (%%xmm1, %%xmm0)
+         " movq %%xmm0, (%0)             \n\t" /*              .. | p3*v3 .. p0*v0 | */
+@@ -136,8 +136,8 @@ static void pa_volume_s16ne_sse2(int16_t
+         " je 8f                         \n\t"
+ 
+         "7:                             \n\t" /* do samples in groups of 8 */
+-        " movdqu (%1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h  |  v0l  | */
+-        " movdqu 16(%1, %3, 4), %%xmm2  \n\t" /* |  v7h  |  v7l  ..  v4h  |  v4l  | */
++        " movdqu (%q1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h  |  v0l  | */
++        " movdqu 16(%q1, %3, 4), %%xmm2  \n\t" /* |  v7h  |  v7l  ..  v4h  |  v4l  | */
+         " movq (%0), %%xmm1             \n\t" /*              .. |   p3  ..  p0   | */
+         " movq 8(%0), %%xmm3            \n\t" /*              .. |   p7  ..  p4   | */
+         VOLUME_32x16 (%%xmm1, %%xmm0)
+@@ -176,7 +176,7 @@ static void pa_volume_s16re_sse2(int16_t
+         " test $1, %2                   \n\t" /* check for odd samples */
+         " je 2f                         \n\t"
+ 
+-        " movd (%1, %3, 4), %%xmm0      \n\t" /* |  v0h  |  v0l  | */
++        " movd (%q1, %3, 4), %%xmm0      \n\t" /* |  v0h  |  v0l  | */
+         " movw (%0), %w4                \n\t" /*     ..  |   p0  | */
+         " rorw $8, %w4                  \n\t"
+         " movd %4, %%xmm1               \n\t"
+@@ -193,7 +193,7 @@ static void pa_volume_s16re_sse2(int16_t
+         " je 4f                         \n\t"
+ 
+         "3:                             \n\t" /* do samples in groups of 2 */
+-        " movq (%1, %3, 4), %%xmm0      \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
++        " movq (%q1, %3, 4), %%xmm0      \n\t" /* |  v1h  |  v1l  |  v0h  |  v0l  | */
+         " movd (%0), %%xmm1             \n\t" /*              .. |   p1  |  p0   | */
+         SWAP_16 (%%xmm1)
+         VOLUME_32x16 (%%xmm1, %%xmm0)
+@@ -211,7 +211,7 @@ static void pa_volume_s16re_sse2(int16_t
+          * that the array is 16 bytes aligned, we probably have to do the odd values
+          * after this then. */
+         "5:                             \n\t" /* do samples in groups of 4 */
+-        " movdqu (%1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h  |  v0l  | */
++        " movdqu (%q1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h  |  v0l  | */
+         " movq (%0), %%xmm1             \n\t" /*              .. |   p3  ..  p0   | */
+         SWAP_16 (%%xmm1)
+         VOLUME_32x16 (%%xmm1, %%xmm0)
+@@ -226,8 +226,8 @@ static void pa_volume_s16re_sse2(int16_t
+         " je 8f                         \n\t"
+ 
+         "7:                             \n\t" /* do samples in groups of 8 */
+-        " movdqu (%1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h  |  v0l  | */
+-        " movdqu 16(%1, %3, 4), %%xmm2  \n\t" /* |  v7h  |  v7l  ..  v4h  |  v4l  | */
++        " movdqu (%q1, %3, 4), %%xmm0    \n\t" /* |  v3h  |  v3l  ..  v0h  |  v0l  | */
++        " movdqu 16(%q1, %3, 4), %%xmm2  \n\t" /* |  v7h  |  v7l  ..  v4h  |  v4l  | */
+         " movq (%0), %%xmm1             \n\t" /*              .. |   p3  ..  p0   | */
+         " movq 8(%0), %%xmm3            \n\t" /*              .. |   p7  ..  p4   | */
+         SWAP_16_2 (%%xmm1, %%xmm3)
+Index: pulseaudio-1.1/src/pulsecore/sconv_sse.c
+===================================================================
+--- pulseaudio-1.1.orig/src/pulsecore/sconv_sse.c
++++ pulseaudio-1.1/src/pulsecore/sconv_sse.c
+@@ -54,8 +54,8 @@ static void pa_sconv_s16le_from_f32ne_ss
+         " je 2f                         \n\t"
+ 
+         "1:                             \n\t"
+-        " movups (%2, %0, 2), %%xmm0    \n\t" /* read 8 floats */
+-        " movups 16(%2, %0, 2), %%xmm2  \n\t"
++        " movups (%q2, %0, 2), %%xmm0    \n\t" /* read 8 floats */
++        " movups 16(%q2, %0, 2), %%xmm2  \n\t"
+         " minps  %%xmm5, %%xmm0         \n\t" /* clamp to 1.0 */
+         " minps  %%xmm5, %%xmm2         \n\t"
+         " maxps  %%xmm6, %%xmm0         \n\t" /* clamp to -1.0 */
+@@ -72,8 +72,8 @@ static void pa_sconv_s16le_from_f32ne_ss
+ 
+         " packssdw %%mm1, %%mm0         \n\t" /* pack parts */
+         " packssdw %%mm3, %%mm2         \n\t"
+-        " movq     %%mm0, (%3, %0)      \n\t"
+-        " movq    %%mm2, 8(%3, %0)     \n\t"
++        " movq     %%mm0, (%q3, %0)      \n\t"
++        " movq    %%mm2, 8(%q3, %0)     \n\t"
+ 
+         " add $16, %0                   \n\t"
+         " dec %1                        \n\t"
+@@ -85,12 +85,12 @@ static void pa_sconv_s16le_from_f32ne_ss
+         " je 4f                         \n\t"
+ 
+         "3:                             \n\t"
+-        " movss (%2, %0, 2), %%xmm0     \n\t"
++        " movss (%q2, %0, 2), %%xmm0     \n\t"
+         " minss  %%xmm5, %%xmm0         \n\t"
+         " maxss  %%xmm6, %%xmm0         \n\t"
+         " mulss  %%xmm7, %%xmm0         \n\t"
+         " cvtss2si %%xmm0, %4           \n\t"
+-        " movw  %w4, (%3, %0)           \n\t"
++        " movw  %w4, (%q3, %0)           \n\t"
+         " add $2, %0                    \n\t"
+         " dec %1                        \n\t"
+         " jne 3b                        \n\t"
+@@ -119,8 +119,8 @@ static void pa_sconv_s16le_from_f32ne_ss
+         " je 2f                         \n\t"
+ 
+         "1:                             \n\t"
+-        " movups (%2, %0, 2), %%xmm0    \n\t" /* read 8 floats */
+-        " movups 16(%2, %0, 2), %%xmm2  \n\t"
++        " movups (%q2, %0, 2), %%xmm0    \n\t" /* read 8 floats */
++        " movups 16(%q2, %0, 2), %%xmm2  \n\t"
+         " minps  %%xmm5, %%xmm0         \n\t" /* clamp to 1.0 */
+         " minps  %%xmm5, %%xmm2         \n\t"
+         " maxps  %%xmm6, %%xmm0         \n\t" /* clamp to -1.0 */
+@@ -132,7 +132,7 @@ static void pa_sconv_s16le_from_f32ne_ss
+         " cvtps2dq %%xmm2, %%xmm2       \n\t"
+ 
+         " packssdw %%xmm2, %%xmm0       \n\t"
+-        " movdqu   %%xmm0, (%3, %0)     \n\t"
++        " movdqu   %%xmm0, (%q3, %0)     \n\t"
+ 
+         " add $16, %0                   \n\t"
+         " dec %1                        \n\t"
+@@ -144,12 +144,12 @@ static void pa_sconv_s16le_from_f32ne_ss
+         " je 4f                         \n\t"
+ 
+         "3:                             \n\t"
+-        " movss (%2, %0, 2), %%xmm0     \n\t"
++        " movss (%q2, %0, 2), %%xmm0     \n\t"
+         " minss  %%xmm5, %%xmm0         \n\t"
+         " maxss  %%xmm6, %%xmm0         \n\t"
+         " mulss  %%xmm7, %%xmm0         \n\t"
+         " cvtss2si %%xmm0, %4           \n\t"
+-        " movw  %w4, (%3, %0)           \n\t"
++        " movw  %w4, (%q3, %0)           \n\t"
+         " add $2, %0                    \n\t"
+         " dec %1                        \n\t"
+         " jne 3b                        \n\t"
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_1.1.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_1.1.bb
index 4c8b46f..93db782 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_1.1.bb
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_1.1.bb
@@ -1,6 +1,6 @@ 
 require pulseaudio.inc
 
-PR = "r4"
+PR = "r5"
 
 DEPENDS += "libjson gdbm speex libxml-parser-perl-native"
 
@@ -8,6 +8,7 @@  inherit gettext perlnative
 
 SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/pulseaudio-${PV}.tar.xz \
   file://volatiles.04_pulse \
+  file://pulseaudo_fix_for_x32.patch \
 "
 
 SRC_URI[md5sum] = "17d21df798cee407b769c6355fae397a"