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