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