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 double fprs[__NUM_FPRS]; 53 } _s390_fp_regs; 54 55 typedef struct 56 { 57 _s390_regs_common regs; 58 _s390_fp_regs fpregs; 59 } _sigregs; 60 61 struct sigcontext 62 { 63 unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS]; 64 _sigregs __user *sregs; 65 }; 66 67 68 #endif 69 70