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