Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
0002 /*
0003  *  S390 version
0004  *    Copyright IBM Corp. 1999, 2000
0005  */
0006 
0007 #ifndef _ASM_S390_SIGCONTEXT_H
0008 #define _ASM_S390_SIGCONTEXT_H
0009 
0010 #include <linux/compiler.h>
0011 #include <linux/types.h>
0012 
0013 #define __NUM_GPRS      16
0014 #define __NUM_FPRS      16
0015 #define __NUM_ACRS      16
0016 #define __NUM_VXRS      32
0017 #define __NUM_VXRS_LOW      16
0018 #define __NUM_VXRS_HIGH     16
0019 
0020 #ifndef __s390x__
0021 
0022 /* Has to be at least _NSIG_WORDS from asm/signal.h */
0023 #define _SIGCONTEXT_NSIG    64
0024 #define _SIGCONTEXT_NSIG_BPW    32
0025 /* Size of stack frame allocated when calling signal handler. */
0026 #define __SIGNAL_FRAMESIZE  96
0027 
0028 #else /* __s390x__ */
0029 
0030 /* Has to be at least _NSIG_WORDS from asm/signal.h */
0031 #define _SIGCONTEXT_NSIG    64
0032 #define _SIGCONTEXT_NSIG_BPW    64 
0033 /* Size of stack frame allocated when calling signal handler. */
0034 #define __SIGNAL_FRAMESIZE  160
0035 
0036 #endif /* __s390x__ */
0037 
0038 #define _SIGCONTEXT_NSIG_WORDS  (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW)
0039 #define _SIGMASK_COPY_SIZE  (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS)
0040 
0041 typedef struct 
0042 {
0043         unsigned long mask;
0044         unsigned long addr;
0045 } __attribute__ ((aligned(8))) _psw_t;
0046 
0047 typedef struct
0048 {
0049     _psw_t psw;
0050     unsigned long gprs[__NUM_GPRS];
0051     unsigned int  acrs[__NUM_ACRS];
0052 } _s390_regs_common;
0053 
0054 typedef struct
0055 {
0056     unsigned int fpc;
0057     unsigned int pad;
0058     double   fprs[__NUM_FPRS];
0059 } _s390_fp_regs;
0060 
0061 typedef struct
0062 {
0063     _s390_regs_common regs;
0064     _s390_fp_regs     fpregs;
0065 } _sigregs;
0066 
0067 typedef struct
0068 {
0069 #ifndef __s390x__
0070     unsigned long gprs_high[__NUM_GPRS];
0071 #endif
0072     unsigned long long vxrs_low[__NUM_VXRS_LOW];
0073     __vector128 vxrs_high[__NUM_VXRS_HIGH];
0074     unsigned char __reserved[128];
0075 } _sigregs_ext;
0076 
0077 struct sigcontext
0078 {
0079     unsigned long   oldmask[_SIGCONTEXT_NSIG_WORDS];
0080     _sigregs        __user *sregs;
0081 };
0082 
0083 
0084 #endif
0085