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