summaryrefslogtreecommitdiffstats
path: root/meta/recipes-multimedia/pulseaudio
diff options
context:
space:
mode:
authorTanu Kaskinen <tanuk@iki.fi>2020-07-18 08:15:55 +0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-07-19 16:20:53 +0100
commitf5731d48a595aba8704b5f5e8602024b49bb71ee (patch)
tree6d424391ce979e8a1c5de0a48afb80027dd57e5b /meta/recipes-multimedia/pulseaudio
parentea5b2d21fa9901198609cab08177c8518f42d4eb (diff)
downloadpoky-f5731d48a595aba8704b5f5e8602024b49bb71ee.tar.gz
pulseaudio: improve the Thumb frame pointer fix
By changing the register that PulseAudio uses in its asm code makes it unnecessary to care whether frame pointers are enabled or not. This fix was suggested by Andre McCurdy. (From OE-Core rev: f0a9be4c196c99661cdd18f80bf25281beb04216) Signed-off-by: Tanu Kaskinen <tanuk@iki.fi> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-multimedia/pulseaudio')
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio.inc8
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch48
-rw-r--r--meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb1
3 files changed, 49 insertions, 8 deletions
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
index c7f3e67022..4e32b27087 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio.inc
@@ -63,14 +63,6 @@ DEPENDS += "speexdsp libxml-parser-perl-native libcap"
63 63
64inherit autotools bash-completion pkgconfig useradd gettext perlnative systemd manpages gsettings 64inherit autotools bash-completion pkgconfig useradd gettext perlnative systemd manpages gsettings
65 65
66# When compiling for Thumb or Thumb2, frame pointers _must_ be disabled since the
67# Thumb frame pointer in r7 clashes with pulseaudio's use of inline asm to make syscalls
68# (where r7 is used for the syscall NR). In most cases, frame pointers will be
69# disabled automatically due to the optimisation level, but append an explicit
70# -fomit-frame-pointer to handle cases where optimisation is set to -O0 or frame
71# pointers have been enabled by -fno-omit-frame-pointer earlier in CFLAGS, etc.
72CFLAGS_append_arm = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
73
74# *.desktop rules wont be generated during configure and build will fail 66# *.desktop rules wont be generated during configure and build will fail
75# if using --disable-nls 67# if using --disable-nls
76USE_NLS = "yes" 68USE_NLS = "yes"
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch
new file mode 100644
index 0000000000..aaa162f9b0
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch
@@ -0,0 +1,48 @@
1From 4a1668f341f0228904105f77fe5871b9d59b2663 Mon Sep 17 00:00:00 2001
2From: Tanu Kaskinen <tanuk@iki.fi>
3Date: Mon, 13 Jul 2020 12:42:14 +0300
4Subject: [PATCH] remap_neon: use register r12 instead of r7
5
6When the Thumb instructions set is used and frame pointers are enabled
7(-fno-omit-frame-pointer), r7 can't be used, because it's used for the
8frame pointer. Trying to use r7 caused the compilation to fail.
9
10Thanks to Andre McCurdy for suggesting[1] this fix, all I had to do was to
11test that it works. The code builds now, and cpu-remap-test also
12succeeds.
13
14[1] https://lists.openembedded.org/g/openembedded-core/message/136786
15
16Upstream-Status: Submitted [https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/324]
17
18Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
19---
20 src/pulsecore/remap_neon.c | 10 +++++++---
21 1 file changed, 7 insertions(+), 3 deletions(-)
22
23diff --git a/src/pulsecore/remap_neon.c b/src/pulsecore/remap_neon.c
24index ca3b95b48..6f71345f8 100644
25--- a/src/pulsecore/remap_neon.c
26+++ b/src/pulsecore/remap_neon.c
27@@ -52,11 +52,15 @@ static void remap_mono_to_stereo_float32ne_generic_arm(pa_remap_t *m, float *dst
28 __asm__ __volatile__ (
29 "ldm %[src]!, {r4,r6} \n\t"
30 "mov r5, r4 \n\t"
31- "mov r7, r6 \n\t"
32- "stm %[dst]!, {r4-r7} \n\t"
33+
34+ /* We use r12 instead of r7 here, because r7 is reserved for the
35+ * frame pointer when using Thumb. */
36+ "mov r12, r6 \n\t"
37+
38+ "stm %[dst]!, {r4-r6,r12} \n\t"
39 : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
40 : /* input operands */
41- : "memory", "r4", "r5", "r6", "r7" /* clobber list */
42+ : "memory", "r4", "r5", "r6", "r12" /* clobber list */
43 );
44 }
45
46--
472.20.1
48
diff --git a/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb b/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb
index d2f201d06e..53e9a2357d 100644
--- a/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio_13.0.bb
@@ -4,6 +4,7 @@ SRC_URI = "http://freedesktop.org/software/pulseaudio/releases/${BP}.tar.xz \
4 file://0001-client-conf-Add-allow-autospawn-for-root.patch \ 4 file://0001-client-conf-Add-allow-autospawn-for-root.patch \
5 file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \ 5 file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \
6 file://0001-remap-arm-Adjust-inline-asm-constraints.patch \ 6 file://0001-remap-arm-Adjust-inline-asm-constraints.patch \
7 file://0001-remap_neon-use-register-r12-instead-of-r7.patch \
7 file://volatiles.04_pulse \ 8 file://volatiles.04_pulse \
8 " 9 "
9SRC_URI[md5sum] = "e41d606f90254ed45c90520faf83d95c" 10SRC_URI[md5sum] = "e41d606f90254ed45c90520faf83d95c"