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>
This commit is contained in:
Andrew G. Morgan 2025-04-19 08:00:23 -07:00
parent 7a2eee5660
commit 6cdd8cd72e

View File

@ -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;