This enables use of struct sigframe and struct rt_sigframe elsewhere,
such as unwind user.

Signed-off-by: Jens Remus <[email protected]>
---
 arch/s390/include/asm/sigframe.h | 78 ++++++++++++++++++++++++++++++++
 arch/s390/kernel/signal.c        | 71 +----------------------------
 2 files changed, 79 insertions(+), 70 deletions(-)
 create mode 100644 arch/s390/include/asm/sigframe.h

diff --git a/arch/s390/include/asm/sigframe.h b/arch/s390/include/asm/sigframe.h
new file mode 100644
index 000000000000..7539fd802675
--- /dev/null
+++ b/arch/s390/include/asm/sigframe.h
@@ -0,0 +1,78 @@
+// SPDX-License-Identifier: GPL-2.0
+#ifndef _ASM_S390_SIGFRAME_H
+#define _ASM_S390_SIGFRAME_H
+
+#include <uapi/asm/sigcontext.h>
+#include <asm/ucontext.h>
+
+/*
+ * Layout of an old-style signal-frame:
+ *     -----------------------------------------
+ *     | save area (_SIGNAL_FRAMESIZE)         |
+ *     -----------------------------------------
+ *     | struct sigcontext                     |
+ *     |       oldmask                         |
+ *     |       _sigregs *                      |
+ *     -----------------------------------------
+ *     | _sigregs with                         |
+ *     |       _s390_regs_common               |
+ *     |       _s390_fp_regs                   |
+ *     -----------------------------------------
+ *     | int signo                             |
+ *     -----------------------------------------
+ *     | _sigregs_ext with                     |
+ *     |       gprs_high 64 byte (opt)         |
+ *     |       vxrs_low 128 byte (opt)         |
+ *     |       vxrs_high 256 byte (opt)        |
+ *     |       reserved 128 byte (opt)         |
+ *     -----------------------------------------
+ *     | __u16 svc_insn                        |
+ *     -----------------------------------------
+ * The svc_insn entry with the sigreturn system call opcode does not
+ * have a fixed position and moves if gprs_high or vxrs exist.
+ * Future extensions will be added to _sigregs_ext.
+ */
+struct sigframe
+{
+       __u8 callee_used_stack[__SIGNAL_FRAMESIZE];
+       struct sigcontext sc;
+       _sigregs sregs;
+       int signo;
+       _sigregs_ext sregs_ext;
+       __u16 svc_insn;         /* Offset of svc_insn is NOT fixed! */
+};
+
+/*
+ * Layout of an rt signal-frame:
+ *     -----------------------------------------
+ *     | save area (_SIGNAL_FRAMESIZE)         |
+ *     -----------------------------------------
+ *     | svc __NR_rt_sigreturn 2 byte          |
+ *     -----------------------------------------
+ *     | struct siginfo                        |
+ *     -----------------------------------------
+ *     | struct ucontext_extended with         |
+ *     |       unsigned long uc_flags          |
+ *     |       struct ucontext *uc_link        |
+ *     |       stack_t uc_stack                |
+ *     |       _sigregs uc_mcontext with       |
+ *     |               _s390_regs_common       |
+ *     |               _s390_fp_regs           |
+ *     |       sigset_t uc_sigmask             |
+ *     |       _sigregs_ext uc_mcontext_ext    |
+ *     |               gprs_high 64 byte (opt) |
+ *     |               vxrs_low 128 byte (opt) |
+ *     |               vxrs_high 256 byte (opt)|
+ *     |               reserved 128 byte (opt) |
+ *     -----------------------------------------
+ * Future extensions will be added to _sigregs_ext.
+ */
+struct rt_sigframe
+{
+       __u8 callee_used_stack[__SIGNAL_FRAMESIZE];
+       __u16 svc_insn;
+       struct siginfo info;
+       struct ucontext_extended uc;
+};
+
+#endif /* _ASM_S390_SIGFRAME_H */
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c
index 4874de5edea0..42675066399f 100644
--- a/arch/s390/kernel/signal.c
+++ b/arch/s390/kernel/signal.c
@@ -32,78 +32,9 @@
 #include <asm/vdso-symbols.h>
 #include <asm/access-regs.h>
 #include <asm/lowcore.h>
+#include <asm/sigframe.h>
 #include "entry.h"
 
-/*
- * Layout of an old-style signal-frame:
- *     -----------------------------------------
- *     | save area (_SIGNAL_FRAMESIZE)         |
- *     -----------------------------------------
- *     | struct sigcontext                     |
- *     |       oldmask                         |
- *     |       _sigregs *                      |
- *     -----------------------------------------
- *     | _sigregs with                         |
- *     |       _s390_regs_common               |
- *     |       _s390_fp_regs                   |
- *     -----------------------------------------
- *     | int signo                             |
- *     -----------------------------------------
- *     | _sigregs_ext with                     |
- *     |       gprs_high 64 byte (opt)         |
- *     |       vxrs_low 128 byte (opt)         |
- *     |       vxrs_high 256 byte (opt)        |
- *     |       reserved 128 byte (opt)         |
- *     -----------------------------------------
- *     | __u16 svc_insn                        |
- *     -----------------------------------------
- * The svc_insn entry with the sigreturn system call opcode does not
- * have a fixed position and moves if gprs_high or vxrs exist.
- * Future extensions will be added to _sigregs_ext.
- */
-struct sigframe
-{
-       __u8 callee_used_stack[__SIGNAL_FRAMESIZE];
-       struct sigcontext sc;
-       _sigregs sregs;
-       int signo;
-       _sigregs_ext sregs_ext;
-       __u16 svc_insn;         /* Offset of svc_insn is NOT fixed! */
-};
-
-/*
- * Layout of an rt signal-frame:
- *     -----------------------------------------
- *     | save area (_SIGNAL_FRAMESIZE)         |
- *     -----------------------------------------
- *     | svc __NR_rt_sigreturn 2 byte          |
- *     -----------------------------------------
- *     | struct siginfo                        |
- *     -----------------------------------------
- *     | struct ucontext_extended with         |
- *     |       unsigned long uc_flags          |
- *     |       struct ucontext *uc_link        |
- *     |       stack_t uc_stack                |
- *     |       _sigregs uc_mcontext with       |
- *     |               _s390_regs_common       |
- *     |               _s390_fp_regs           |
- *     |       sigset_t uc_sigmask             |
- *     |       _sigregs_ext uc_mcontext_ext    |
- *     |               gprs_high 64 byte (opt) |
- *     |               vxrs_low 128 byte (opt) |
- *     |               vxrs_high 256 byte (opt)|
- *     |               reserved 128 byte (opt) |
- *     -----------------------------------------
- * Future extensions will be added to _sigregs_ext.
- */
-struct rt_sigframe
-{
-       __u8 callee_used_stack[__SIGNAL_FRAMESIZE];
-       __u16 svc_insn;
-       struct siginfo info;
-       struct ucontext_extended uc;
-};
-
 /* Store registers needed to create the signal frame */
 static void store_sigregs(void)
 {
-- 
2.51.0


Reply via email to