All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] pulseaudio: improve the Thumb frame pointer fix
@ 2020-07-18  4:40 Tanu Kaskinen
  2020-07-18  5:02 ` ✗ patchtest: failure for " Patchwork
  0 siblings, 1 reply; 2+ messages in thread
From: Tanu Kaskinen @ 2020-07-18  4:40 UTC (permalink / raw)
  To: openembedded-core

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.

Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
---
 .../pulseaudio/pulseaudio.inc                 |  8 ---
 ..._neon-use-register-r12-instead-of-r7.patch | 49 +++++++++++++++++++
 .../pulseaudio/pulseaudio_13.0.bb             |  1 +
 3 files changed, 50 insertions(+), 8 deletions(-)
 create mode 100644 meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch

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"
 
 inherit autotools bash-completion pkgconfig useradd gettext perlnative systemd manpages gsettings
 
-# When compiling for Thumb or Thumb2, frame pointers _must_ be disabled since the
-# Thumb frame pointer in r7 clashes with pulseaudio's use of inline asm to make syscalls
-# (where r7 is used for the syscall NR). In most cases, frame pointers will be
-# disabled automatically due to the optimisation level, but append an explicit
-# -fomit-frame-pointer to handle cases where optimisation is set to -O0 or frame
-# pointers have been enabled by -fno-omit-frame-pointer earlier in CFLAGS, etc.
-CFLAGS_append_arm = " ${@bb.utils.contains('TUNE_CCARGS', '-mthumb', '-fomit-frame-pointer', '', d)}"
-
 # *.desktop rules wont be generated during configure and build will fail
 # if using --disable-nls
 USE_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..53a765a4c8
--- /dev/null
+++ b/meta/recipes-multimedia/pulseaudio/pulseaudio/0001-remap_neon-use-register-r12-instead-of-r7.patch
@@ -0,0 +1,49 @@
+From 4a1668f341f0228904105f77fe5871b9d59b2663 Mon Sep 17 00:00:00 2001
+From: Tanu Kaskinen <tanuk@iki.fi>
+Date: Mon, 13 Jul 2020 12:42:14 +0300
+Subject: [PATCH] remap_neon: use register r12 instead of r7
+
+When the Thumb instructions set is used and frame pointers are enabled
+(-fno-omit-frame-pointer), r7 can't be used, because it's used for the
+frame pointer. Trying to use r7 caused the compilation to fail.
+
+Thanks to Andre McCurdy for suggesting[1] this fix, all I had to do was to
+test that it works. The code builds now, and cpu-remap-test also
+succeeds.
+
+[1] https://lists.openembedded.org/g/openembedded-core/message/136786
+
+Upstream-Status: Submitted
+[https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/324]
+
+Signed-off-by: Tanu Kaskinen <tanuk@iki.fi>
+---
+ src/pulsecore/remap_neon.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/pulsecore/remap_neon.c b/src/pulsecore/remap_neon.c
+index ca3b95b48..6f71345f8 100644
+--- a/src/pulsecore/remap_neon.c
++++ b/src/pulsecore/remap_neon.c
+@@ -52,11 +52,15 @@ static void remap_mono_to_stereo_float32ne_generic_arm(pa_remap_t *m, float *dst
+         __asm__ __volatile__ (
+             "ldm        %[src]!, {r4,r6}        \n\t"
+             "mov        r5, r4                  \n\t"
+-            "mov        r7, r6                  \n\t"
+-            "stm        %[dst]!, {r4-r7}        \n\t"
++
++            /* We use r12 instead of r7 here, because r7 is reserved for the
++             * frame pointer when using Thumb. */
++            "mov        r12, r6                 \n\t"
++
++            "stm        %[dst]!, {r4-r6,r12}    \n\t"
+             : [dst] "+r" (dst), [src] "+r" (src) /* output operands */
+             : /* input operands */
+-            : "memory", "r4", "r5", "r6", "r7" /* clobber list */
++            : "memory", "r4", "r5", "r6", "r12" /* clobber list */
+         );
+     }
+ 
+-- 
+2.20.1
+
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 \
            file://0001-client-conf-Add-allow-autospawn-for-root.patch \
            file://0002-do-not-display-CLFAGS-to-improve-reproducibility-bui.patch \
            file://0001-remap-arm-Adjust-inline-asm-constraints.patch \
+           file://0001-remap_neon-use-register-r12-instead-of-r7.patch \
            file://volatiles.04_pulse \
            "
 SRC_URI[md5sum] = "e41d606f90254ed45c90520faf83d95c"
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* ✗ patchtest: failure for pulseaudio: improve the Thumb frame pointer fix
  2020-07-18  4:40 [PATCH] pulseaudio: improve the Thumb frame pointer fix Tanu Kaskinen
@ 2020-07-18  5:02 ` Patchwork
  0 siblings, 0 replies; 2+ messages in thread
From: Patchwork @ 2020-07-18  5:02 UTC (permalink / raw)
  To: Tanu Kaskinen; +Cc: openembedded-core

== Series Details ==

Series: pulseaudio: improve the Thumb frame pointer fix
Revision: 1
URL   : https://patchwork.openembedded.org/series/25177/
State : failure

== Summary ==


Thank you for submitting this patch series to OpenEmbedded Core. This is
an automated response. Several tests have been executed on the proposed
series by patchtest resulting in the following failures:



* Issue             Upstream-Status is Submitted, but it is not mentioned where [test_upstream_status_presence_format] 
  Suggested fix    Include where 0001-remap_neon-use-register-r12-instead-of-r7.patch was submitted
  Current          Upstream-Status: Submitted
  Standard format  Upstream-Status: Submitted [where]



If you believe any of these test results are incorrect, please reply to the
mailing list (openembedded-core@lists.openembedded.org) raising your concerns.
Otherwise we would appreciate you correcting the issues and submitting a new
version of the patchset if applicable. Please ensure you add/increment the
version number when sending the new version (i.e. [PATCH] -> [PATCH v2] ->
[PATCH v3] -> ...).

---
Guidelines:     https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
Test framework: http://git.yoctoproject.org/cgit/cgit.cgi/patchtest
Test suite:     http://git.yoctoproject.org/cgit/cgit.cgi/patchtest-oe


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-07-18  5:02 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-18  4:40 [PATCH] pulseaudio: improve the Thumb frame pointer fix Tanu Kaskinen
2020-07-18  5:02 ` ✗ patchtest: failure for " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.