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 29 typedef struct 30 { 31 unsigned long mask; 32 unsigned long addr; 33 } __attribute__ ((aligned(8))) _psw_t; 34 35 typedef struct 36 { 37 _psw_t psw; 38 unsigned long gprs[__NUM_GPRS]; 39 unsigned int acrs[__NUM_ACRS]; 40 } _s390_regs_common; 41 42 typedef struct 43 { 44 unsigned int fpc; 45 unsigned int pad; 46 double fprs[__NUM_FPRS]; 47 } _s390_fp_regs; 48 49 typedef struct 50 { 51 _s390_regs_common regs; 52 _s390_fp_regs fpregs; 53 } _sigregs; 54 55 typedef 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 62 struct sigcontext 63 { 64 unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS]; 65 _sigregs __user *sregs; 66 }; 67 68 69 #endif 70 71