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 11 #define __NUM_GPRS 16 12 #define __NUM_FPRS 16 13 #define __NUM_ACRS 16 14 15 #ifndef __s390x__ 16 17 /* Has to be at least _NSIG_WORDS from asm/signal.h */ 18 #define _SIGCONTEXT_NSIG 64 19 #define _SIGCONTEXT_NSIG_BPW 32 20 /* Size of stack frame allocated when calling signal handler. */ 21 #define __SIGNAL_FRAMESIZE 96 22 23 #else /* __s390x__ */ 24 25 /* Has to be at least _NSIG_WORDS from asm/signal.h */ 26 #define _SIGCONTEXT_NSIG 64 27 #define _SIGCONTEXT_NSIG_BPW 64 28 /* Size of stack frame allocated when calling signal handler. */ 29 #define __SIGNAL_FRAMESIZE 160 30 31 #endif /* __s390x__ */ 32 33 #define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW) 34 #define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS) 35 36 typedef struct 37 { 38 unsigned long mask; 39 unsigned long addr; 40 } __attribute__ ((aligned(8))) _psw_t; 41 42 typedef struct 43 { 44 _psw_t psw; 45 unsigned long gprs[__NUM_GPRS]; 46 unsigned int acrs[__NUM_ACRS]; 47 } _s390_regs_common; 48 49 typedef struct 50 { 51 unsigned int fpc; 52 unsigned int pad; 53 double fprs[__NUM_FPRS]; 54 } _s390_fp_regs; 55 56 typedef struct 57 { 58 _s390_regs_common regs; 59 _s390_fp_regs fpregs; 60 } _sigregs; 61 62 struct sigcontext 63 { 64 unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS]; 65 _sigregs __user *sregs; 66 }; 67 68 69 #endif 70 71