diff options
Diffstat (limited to 'arch/s390/include/uapi')
-rw-r--r-- | arch/s390/include/uapi/asm/sigcontext.h | 20 | ||||
-rw-r--r-- | arch/s390/include/uapi/asm/types.h | 4 | ||||
-rw-r--r-- | arch/s390/include/uapi/asm/ucontext.h | 15 |
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 | ||
66 | typedef 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 | |||
62 | struct sigcontext | 76 | struct 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 @@ | |||
17 | typedef unsigned long addr_t; | 17 | typedef unsigned long addr_t; |
18 | typedef __signed__ long saddr_t; | 18 | typedef __signed__ long saddr_t; |
19 | 19 | ||
20 | typedef 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 | */ | ||
14 | struct ucontext_extended { | 19 | struct 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 | |||
27 | struct ucontext { | 30 | struct ucontext { |
28 | unsigned long uc_flags; | 31 | unsigned long uc_flags; |
29 | struct ucontext *uc_link; | 32 | struct ucontext *uc_link; |