|
@@ -0,0 +1,65 @@
|
|
|
+From 9421f4ff93c341482d3aa4a0cd57aba1978bdd62 Mon Sep 17 00:00:00 2001
|
|
|
+From: "Andrew G. Morgan" <morgan@kernel.org>
|
|
|
+Date: Sat, 19 Apr 2025 08:00:23 -0700
|
|
|
+Subject: [PATCH] Support for __xtensa__ architecture.
|
|
|
+
|
|
|
+It looks like __xtensa__ defines SA_RESTORER, but my read of the
|
|
|
+kernel code suggests that signal handling does not require it be
|
|
|
+set. Specifically, if the SA_RESTORER flag is not set, the kernel
|
|
|
+inserts a sys_rt_sigreturn call into the stack frame.
|
|
|
+
|
|
|
+Signed-off-by: Andrew G. Morgan <morgan@kernel.org>
|
|
|
+Upstream: 6cdd8cd72ebcedd6b1b6c989a7e5722d5d87f35c
|
|
|
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
|
|
|
+---
|
|
|
+ psx/psx_calls.c | 13 +++++++------
|
|
|
+ 1 file changed, 7 insertions(+), 6 deletions(-)
|
|
|
+
|
|
|
+diff --git a/psx/psx_calls.c b/psx/psx_calls.c
|
|
|
+index 8195964..aff105f 100644
|
|
|
+--- a/psx/psx_calls.c
|
|
|
++++ b/psx/psx_calls.c
|
|
|
+@@ -49,7 +49,8 @@
|
|
|
+ || defined(__powerpc__) || defined(__s390__) || defined(__riscv) \
|
|
|
+ || defined(__alpha__) || defined(__hppa__) || defined(__sh__) \
|
|
|
+ || defined(__m68k__) || defined(__sparc__) || defined(__arc__) \
|
|
|
+- || defined(__microblaze__) || defined(__or1k__)
|
|
|
++ || defined(__microblaze__) || defined(__or1k__) \
|
|
|
++ || defined(__xtensa__)
|
|
|
+
|
|
|
+ #undef _NSIG
|
|
|
+ #undef _NSIG_BPW
|
|
|
+@@ -69,8 +70,7 @@
|
|
|
+ #define _NSIG_WORDS (_NSIG / _NSIG_BPW)
|
|
|
+
|
|
|
+ #if defined(__x86_64__) || defined(__i386__) \
|
|
|
+- || defined(__arm__) \
|
|
|
+- || defined(__powerpc__) \
|
|
|
++ || defined(__arm__) || defined(__powerpc__) \
|
|
|
+ || defined(__arc__)
|
|
|
+ /* field used */
|
|
|
+ #define SA_RESTORER 0x04000000
|
|
|
+@@ -78,8 +78,9 @@
|
|
|
+
|
|
|
+ #if defined(SA_RESTORER) \
|
|
|
+ || defined(__aarch64__) \
|
|
|
+- || defined(__m68k__) || defined(__sh__) || defined(__sparc__) \
|
|
|
+- || defined(__s390__) || defined(__sparc__)
|
|
|
++ || defined(__m68k__) || defined(__sh__) \
|
|
|
++ || defined(__s390__) || defined(__sparc__) \
|
|
|
++ || defined(__xtensa__)
|
|
|
+ /* field defined */
|
|
|
+ #define _HAS_SA_RESTORER void *sa_restorer;
|
|
|
+ #else
|
|
|
+@@ -93,7 +94,7 @@ typedef struct {
|
|
|
+ #define sigset_t psx_sigset_t
|
|
|
+
|
|
|
+ struct psx_sigaction {
|
|
|
+-#if defined(__m68k__) || defined(__alpha__)
|
|
|
++#if defined(__m68k__) || defined(__alpha__) || defined(__xtensa__)
|
|
|
+ void *sa_handler;
|
|
|
+ sigset_t sa_mask;
|
|
|
+ unsigned long sa_flags;
|
|
|
+--
|
|
|
+2.49.0
|
|
|
+
|