2024-09-09 08:52:07 +00:00
|
|
|
/*
|
|
|
|
* S390 version
|
2024-09-09 08:57:42 +00:00
|
|
|
* Copyright IBM Corp. 1999, 2000
|
2024-09-09 08:52:07 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _ASM_S390_SIGCONTEXT_H
|
|
|
|
#define _ASM_S390_SIGCONTEXT_H
|
|
|
|
|
|
|
|
#include <linux/compiler.h>
|
2024-09-09 08:57:42 +00:00
|
|
|
#include <linux/types.h>
|
2024-09-09 08:52:07 +00:00
|
|
|
|
2024-09-09 08:57:42 +00:00
|
|
|
#define __NUM_GPRS 16
|
|
|
|
#define __NUM_FPRS 16
|
|
|
|
#define __NUM_ACRS 16
|
|
|
|
#define __NUM_VXRS 32
|
|
|
|
#define __NUM_VXRS_LOW 16
|
|
|
|
#define __NUM_VXRS_HIGH 16
|
2024-09-09 08:52:07 +00:00
|
|
|
|
|
|
|
#ifndef __s390x__
|
|
|
|
|
|
|
|
/* Has to be at least _NSIG_WORDS from asm/signal.h */
|
|
|
|
#define _SIGCONTEXT_NSIG 64
|
|
|
|
#define _SIGCONTEXT_NSIG_BPW 32
|
|
|
|
/* Size of stack frame allocated when calling signal handler. */
|
|
|
|
#define __SIGNAL_FRAMESIZE 96
|
|
|
|
|
|
|
|
#else /* __s390x__ */
|
|
|
|
|
|
|
|
/* Has to be at least _NSIG_WORDS from asm/signal.h */
|
|
|
|
#define _SIGCONTEXT_NSIG 64
|
|
|
|
#define _SIGCONTEXT_NSIG_BPW 64
|
|
|
|
/* Size of stack frame allocated when calling signal handler. */
|
|
|
|
#define __SIGNAL_FRAMESIZE 160
|
|
|
|
|
|
|
|
#endif /* __s390x__ */
|
|
|
|
|
|
|
|
#define _SIGCONTEXT_NSIG_WORDS (_SIGCONTEXT_NSIG / _SIGCONTEXT_NSIG_BPW)
|
|
|
|
#define _SIGMASK_COPY_SIZE (sizeof(unsigned long)*_SIGCONTEXT_NSIG_WORDS)
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
unsigned long mask;
|
|
|
|
unsigned long addr;
|
|
|
|
} __attribute__ ((aligned(8))) _psw_t;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
_psw_t psw;
|
|
|
|
unsigned long gprs[__NUM_GPRS];
|
|
|
|
unsigned int acrs[__NUM_ACRS];
|
|
|
|
} _s390_regs_common;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
unsigned int fpc;
|
2024-09-09 08:57:42 +00:00
|
|
|
unsigned int pad;
|
2024-09-09 08:52:07 +00:00
|
|
|
double fprs[__NUM_FPRS];
|
|
|
|
} _s390_fp_regs;
|
|
|
|
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
_s390_regs_common regs;
|
|
|
|
_s390_fp_regs fpregs;
|
|
|
|
} _sigregs;
|
|
|
|
|
2024-09-09 08:57:42 +00:00
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
#ifndef __s390x__
|
|
|
|
unsigned long gprs_high[__NUM_GPRS];
|
|
|
|
#endif
|
|
|
|
unsigned long long vxrs_low[__NUM_VXRS_LOW];
|
|
|
|
__vector128 vxrs_high[__NUM_VXRS_HIGH];
|
|
|
|
unsigned char __reserved[128];
|
|
|
|
} _sigregs_ext;
|
|
|
|
|
2024-09-09 08:52:07 +00:00
|
|
|
struct sigcontext
|
|
|
|
{
|
|
|
|
unsigned long oldmask[_SIGCONTEXT_NSIG_WORDS];
|
|
|
|
_sigregs __user *sregs;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|