aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include/uapi
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/include/uapi')
-rw-r--r--arch/s390/include/uapi/asm/sigcontext.h20
-rw-r--r--arch/s390/include/uapi/asm/types.h4
-rw-r--r--arch/s390/include/uapi/asm/ucontext.h15
3 files changed, 30 insertions, 9 deletions
diff --git a/arch/s390/include/uapi/asm/sigcontext.h b/arch/s390/include/uapi/asm/sigcontext.h
index b30de9c01bbe..5f0b8d7ddb0b 100644
--- a/arch/s390/include/uapi/asm/sigcontext.h
+++ b/arch/s390/include/uapi/asm/sigcontext.h
@@ -7,10 +7,14 @@
7#define _ASM_S390_SIGCONTEXT_H 7#define _ASM_S390_SIGCONTEXT_H
8 8
9#include <linux/compiler.h> 9#include <linux/compiler.h>
10#include <linux/types.h>
10 11
11#define __NUM_GPRS 16 12#define __NUM_GPRS 16
12#define __NUM_FPRS 16 13#define __NUM_FPRS 16
13#define __NUM_ACRS 16 14#define __NUM_ACRS 16
15#define __NUM_VXRS 32
16#define __NUM_VXRS_LOW 16
17#define __NUM_VXRS_HIGH 16
14 18
15#ifndef __s390x__ 19#ifndef __s390x__
16 20
@@ -59,6 +63,16 @@ typedef struct
59 _s390_fp_regs fpregs; 63 _s390_fp_regs fpregs;
60} _sigregs; 64} _sigregs;
61 65
66typedef struct
67{
68#ifndef __s390x__
69 unsigned long gprs_high[__NUM_GPRS];
70#endif
71 unsigned long long vxrs_low[__NUM_VXRS_LOW];
72 __vector128 vxrs_high[__NUM_VXRS_HIGH];
73 unsigned char __reserved[128];
74} _sigregs_ext;
75
62struct sigcontext 76struct sigcontext
63{ 77{
64 unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS]; 78 unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS];
diff --git a/arch/s390/include/uapi/asm/types.h b/arch/s390/include/uapi/asm/types.h
index 038f2b9178a4..3c3951e3415b 100644
--- a/arch/s390/include/uapi/asm/types.h
+++ b/arch/s390/include/uapi/asm/types.h
@@ -17,6 +17,10 @@
17typedef unsigned long addr_t; 17typedef unsigned long addr_t;
18typedef __signed__ long saddr_t; 18typedef __signed__ long saddr_t;
19 19
20typedef struct {
21 __u32 u[4];
22} __vector128;
23
20#endif /* __ASSEMBLY__ */ 24#endif /* __ASSEMBLY__ */
21 25
22#endif /* _UAPI_S390_TYPES_H */ 26#endif /* _UAPI_S390_TYPES_H */
diff --git a/arch/s390/include/uapi/asm/ucontext.h b/arch/s390/include/uapi/asm/ucontext.h
index 3e077b2a4705..64a69aa5dde0 100644
--- a/arch/s390/include/uapi/asm/ucontext.h
+++ b/arch/s390/include/uapi/asm/ucontext.h
@@ -7,10 +7,15 @@
7#ifndef _ASM_S390_UCONTEXT_H 7#ifndef _ASM_S390_UCONTEXT_H
8#define _ASM_S390_UCONTEXT_H 8#define _ASM_S390_UCONTEXT_H
9 9
10#define UC_EXTENDED 0x00000001 10#define UC_GPRS_HIGH 1 /* uc_mcontext_ext has valid high gprs */
11 11#define UC_VXRS 2 /* uc_mcontext_ext has valid vector regs */
12#ifndef __s390x__
13 12
13/*
14 * The struct ucontext_extended describes how the registers are stored
15 * on a rt signal frame. Please note that the structure is not fixed,
16 * if new CPU registers are added to the user state the size of the
17 * struct ucontext_extended will increase.
18 */
14struct ucontext_extended { 19struct ucontext_extended {
15 unsigned long uc_flags; 20 unsigned long uc_flags;
16 struct ucontext *uc_link; 21 struct ucontext *uc_link;
@@ -19,11 +24,9 @@ struct ucontext_extended {
19 sigset_t uc_sigmask; 24 sigset_t uc_sigmask;
20 /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */ 25 /* Allow for uc_sigmask growth. Glibc uses a 1024-bit sigset_t. */
21 unsigned char __unused[128 - sizeof(sigset_t)]; 26 unsigned char __unused[128 - sizeof(sigset_t)];
22 unsigned long uc_gprs_high[16]; 27 _sigregs_ext uc_mcontext_ext;
23}; 28};
24 29
25#endif
26
27struct ucontext { 30struct ucontext {
28 unsigned long uc_flags; 31 unsigned long uc_flags;
29 struct ucontext *uc_link; 32 struct ucontext *uc_link;