Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2/*
3 * S390 version
4 * Copyright IBM Corp. 1999, 2000
5 */
6
7#ifndef _ASM_S390_SIGCONTEXT_H
8#define _ASM_S390_SIGCONTEXT_H
9
10#include <linux/compiler.h>
11#include <linux/types.h>
12
13#define __NUM_GPRS 16
14#define __NUM_FPRS 16
15#define __NUM_ACRS 16
16#define __NUM_VXRS 32
17#define __NUM_VXRS_LOW 16
18#define __NUM_VXRS_HIGH 16
19
20/* Has to be at least _NSIG_WORDS from asm/signal.h */
21#define _SIGCONTEXT_NSIG 64
22#define _SIGCONTEXT_NSIG_BPW 64
23/* Size of stack frame allocated when calling signal handler. */
24#define __SIGNAL_FRAMESIZE 160
25
26#define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW)
27#define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS)
28
29typedef struct
30{
31 unsigned long mask;
32 unsigned long addr;
33} __attribute__ ((aligned(8))) _psw_t;
34
35typedef struct
36{
37 _psw_t psw;
38 unsigned long gprs[__NUM_GPRS];
39 unsigned int acrs[__NUM_ACRS];
40} _s390_regs_common;
41
42typedef struct
43{
44 unsigned int fpc;
45 unsigned int pad;
46 double fprs[__NUM_FPRS];
47} _s390_fp_regs;
48
49typedef struct
50{
51 _s390_regs_common regs;
52 _s390_fp_regs fpregs;
53} _sigregs;
54
55typedef struct
56{
57 unsigned long long vxrs_low[__NUM_VXRS_LOW];
58 __vector128 vxrs_high[__NUM_VXRS_HIGH];
59 unsigned char __reserved[128];
60} _sigregs_ext;
61
62struct sigcontext
63{
64 unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS];
65 _sigregs __user *sregs;
66};
67
68
69#endif
70