1/*
2 *  include/asm-s390/signal.h
3 *
4 *  S390 version
5 *
6 *  Derived from "include/asm-i386/signal.h"
7 */
8
9#ifndef _ASMS390_SIGNAL_H
10#define _ASMS390_SIGNAL_H
11
12#include <linux/types.h>
13#include <linux/time.h>
14
15/* Avoid too many header ordering problems.  */
16struct siginfo;
17struct pt_regs;
18
19#ifdef __KERNEL__
20/* Most things should be clean enough to redefine this at will, if care
21   is taken to make libc match.  */
22#include <asm/sigcontext.h>
23#define _NSIG           _SIGCONTEXT_NSIG
24#define _NSIG_BPW       _SIGCONTEXT_NSIG_BPW
25#define _NSIG_WORDS     _SIGCONTEXT_NSIG_WORDS
26
27typedef unsigned long old_sigset_t;             /* at least 32 bits */
28
29typedef struct {
30        unsigned long sig[_NSIG_WORDS];
31} sigset_t;
32
33#else
34/* Here we must cater to libcs that poke about in kernel headers.  */
35
36#define NSIG            32
37typedef unsigned long sigset_t;
38
39#endif /* __KERNEL__ */
40
41#define SIGHUP           1
42#define SIGINT           2
43#define SIGQUIT          3
44#define SIGILL           4
45#define SIGTRAP          5
46#define SIGABRT          6
47#define SIGIOT           6
48#define SIGBUS           7
49#define SIGFPE           8
50#define SIGKILL          9
51#define SIGUSR1         10
52#define SIGSEGV         11
53#define SIGUSR2         12
54#define SIGPIPE         13
55#define SIGALRM         14
56#define SIGTERM         15
57#define SIGSTKFLT       16
58#define SIGCHLD         17
59#define SIGCONT         18
60#define SIGSTOP         19
61#define SIGTSTP         20
62#define SIGTTIN         21
63#define SIGTTOU         22
64#define SIGURG          23
65#define SIGXCPU         24
66#define SIGXFSZ         25
67#define SIGVTALRM       26
68#define SIGPROF         27
69#define SIGWINCH        28
70#define SIGIO           29
71#define SIGPOLL         SIGIO
72/*
73#define SIGLOST         29
74*/
75#define SIGPWR          30
76#define SIGSYS		31
77#define SIGUNUSED       31
78
79/* These should not be considered constants from userland.  */
80#define SIGRTMIN        32
81#define SIGRTMAX        _NSIG
82
83/*
84 * SA_FLAGS values:
85 *
86 * SA_ONSTACK indicates that a registered stack_t will be used.
87 * SA_RESTART flag to get restarting signals (which were the default long ago)
88 * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
89 * SA_RESETHAND clears the handler when the signal is delivered.
90 * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
91 * SA_NODEFER prevents the current signal from being masked in the handler.
92 *
93 * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
94 * Unix names RESETHAND and NODEFER respectively.
95 */
96#define SA_NOCLDSTOP    0x00000001
97#define SA_NOCLDWAIT    0x00000002
98#define SA_SIGINFO      0x00000004
99#define SA_ONSTACK      0x08000000
100#define SA_RESTART      0x10000000
101#define SA_NODEFER      0x40000000
102#define SA_RESETHAND    0x80000000
103
104#define SA_NOMASK       SA_NODEFER
105#define SA_ONESHOT      SA_RESETHAND
106
107#define SA_RESTORER     0x04000000
108
109/*
110 * sigaltstack controls
111 */
112#define SS_ONSTACK      1
113#define SS_DISABLE      2
114
115#define MINSIGSTKSZ     2048
116#define SIGSTKSZ        8192
117
118#include <asm-generic/signal.h>
119
120#ifdef __KERNEL__
121struct old_sigaction {
122        __sighandler_t sa_handler;
123        old_sigset_t sa_mask;
124        unsigned long sa_flags;
125        void (*sa_restorer)(void);
126};
127
128struct sigaction {
129        __sighandler_t sa_handler;
130        unsigned long sa_flags;
131        void (*sa_restorer)(void);
132        sigset_t sa_mask;               /* mask last for extensibility */
133};
134
135struct k_sigaction {
136        struct sigaction sa;
137};
138
139#define ptrace_signal_deliver(regs, cookie) do { } while (0)
140
141#else
142/* Here we must cater to libcs that poke about in kernel headers.  */
143
144struct sigaction {
145        union {
146          __sighandler_t _sa_handler;
147          void (*_sa_sigaction)(int, struct siginfo *, void *);
148        } _u;
149#ifndef __s390x__     /* lovely */
150        sigset_t sa_mask;
151        unsigned long sa_flags;
152        void (*sa_restorer)(void);
153#else  /* __s390x__ */
154        unsigned long sa_flags;
155        void (*sa_restorer)(void);
156	sigset_t sa_mask;
157#endif /* __s390x__ */
158};
159
160#define sa_handler      _u._sa_handler
161#define sa_sigaction    _u._sa_sigaction
162
163#endif /* __KERNEL__ */
164
165typedef struct sigaltstack {
166        void __user *ss_sp;
167        int ss_flags;
168        size_t ss_size;
169} stack_t;
170
171
172#endif
173