Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/s390/include/uapi/asm/sigcontext.h
26481 views
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
#ifndef __s390x__
21
22
/* Has to be at least _NSIG_WORDS from asm/signal.h */
23
#define _SIGCONTEXT_NSIG 64
24
#define _SIGCONTEXT_NSIG_BPW 32
25
/* Size of stack frame allocated when calling signal handler. */
26
#define __SIGNAL_FRAMESIZE 96
27
28
#else /* __s390x__ */
29
30
/* Has to be at least _NSIG_WORDS from asm/signal.h */
31
#define _SIGCONTEXT_NSIG 64
32
#define _SIGCONTEXT_NSIG_BPW 64
33
/* Size of stack frame allocated when calling signal handler. */
34
#define __SIGNAL_FRAMESIZE 160
35
36
#endif /* __s390x__ */
37
38
#define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW)
39
#define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS)
40
41
typedef struct
42
{
43
unsigned long mask;
44
unsigned long addr;
45
} __attribute__ ((aligned(8))) _psw_t;
46
47
typedef struct
48
{
49
_psw_t psw;
50
unsigned long gprs[__NUM_GPRS];
51
unsigned int acrs[__NUM_ACRS];
52
} _s390_regs_common;
53
54
typedef struct
55
{
56
unsigned int fpc;
57
unsigned int pad;
58
double fprs[__NUM_FPRS];
59
} _s390_fp_regs;
60
61
typedef struct
62
{
63
_s390_regs_common regs;
64
_s390_fp_regs fpregs;
65
} _sigregs;
66
67
typedef struct
68
{
69
#ifndef __s390x__
70
unsigned long gprs_high[__NUM_GPRS];
71
#endif
72
unsigned long long vxrs_low[__NUM_VXRS_LOW];
73
__vector128 vxrs_high[__NUM_VXRS_HIGH];
74
unsigned char __reserved[128];
75
} _sigregs_ext;
76
77
struct sigcontext
78
{
79
unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS];
80
_sigregs __user *sregs;
81
};
82
83
84
#endif
85
86
87