1 /* 2 * S390 version 3 * Copyright IBM Corp. 1999, 2000 4 */ 5 6 #ifndef _ASM_S390_SIGCONTEXT_H 7 #define _ASM_S390_SIGCONTEXT_H 8 9 #include <linux/compiler.h> 10 #include <linux/types.h> 11 12 #define __NUM_GPRS 16 13 #define __NUM_FPRS 16 14 #define __NUM_ACRS 16 15 #define __NUM_VXRS 32 16 #define __NUM_VXRS_LOW 16 17 #define __NUM_VXRS_HIGH 16 18 19 #ifndef __s390x__ 20 21 /* Has to be at least _NSIG_WORDS from asm/signal.h */ 22 #define _SIGCONTEXT_NSIG 64 23 #define _SIGCONTEXT_NSIG_BPW 32 24 /* Size of stack frame allocated when calling signal handler. */ 25 #define __SIGNAL_FRAMESIZE 96 26 27 #else /* __s390x__ */ 28 29 /* Has to be at least _NSIG_WORDS from asm/signal.h */ 30 #define _SIGCONTEXT_NSIG 64 31 #define _SIGCONTEXT_NSIG_BPW 64 32 /* Size of stack frame allocated when calling signal handler. */ 33 #define __SIGNAL_FRAMESIZE 160 34 35 #endif /* __s390x__ */ 36 37 #define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW) 38 #define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS) 39 40 typedef struct 41 { 42 unsigned long mask; 43 unsigned long addr; 44 } __attribute__ ((aligned(8))) _psw_t; 45 46 typedef struct 47 { 48 _psw_t psw; 49 unsigned long gprs[__NUM_GPRS]; 50 unsigned int acrs[__NUM_ACRS]; 51 } _s390_regs_common; 52 53 typedef struct 54 { 55 unsigned int fpc; 56 unsigned int pad; 57 double fprs[__NUM_FPRS]; 58 } _s390_fp_regs; 59 60 typedef struct 61 { 62 _s390_regs_common regs; 63 _s390_fp_regs fpregs; 64 } _sigregs; 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 76 struct sigcontext 77 { 78 unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS]; 79 _sigregs __user *sregs; 80 }; 81 82 83 #endif 84 85