11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _ASMARM_SIGNAL_H
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _ASMARM_SIGNAL_H
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/types.h>
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Avoid too many header ordering problems.  */
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct siginfo;
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Most things should be clean enough to redefine this at will, if care
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds   is taken to make libc match.  */
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _NSIG		64
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _NSIG_BPW	32
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _NSIG_WORDS	(_NSIG / _NSIG_BPW)
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef unsigned long old_sigset_t;		/* at least 32 bits */
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct {
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long sig[_NSIG_WORDS];
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} sigset_t;
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Here we must cater to libcs that poke about in kernel headers.  */
251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define NSIG		32
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef unsigned long sigset_t;
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __KERNEL__ */
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGHUP		 1
321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGINT		 2
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGQUIT		 3
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGILL		 4
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTRAP		 5
361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGABRT		 6
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGIOT		 6
381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGBUS		 7
391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGFPE		 8
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGKILL		 9
411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGUSR1		10
421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSEGV		11
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGUSR2		12
441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGPIPE		13
451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGALRM		14
461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTERM		15
471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSTKFLT	16
481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGCHLD		17
491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGCONT		18
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSTOP		19
511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTSTP		20
521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTTIN		21
531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGTTOU		22
541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGURG		23
551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGXCPU		24
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGXFSZ		25
571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGVTALRM	26
581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGPROF		27
591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGWINCH	28
601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGIO		29
611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGPOLL		SIGIO
621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGLOST		29
641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds*/
651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGPWR		30
661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSYS		31
671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define	SIGUNUSED	31
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* These should not be considered constants from userland.  */
701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGRTMIN	32
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGRTMAX	_NSIG
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSWI		32
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_FLAGS values:
771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_NOCLDSTOP		flag to turn off SIGCHLD when children stop.
791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_NOCLDWAIT		flag on SIGCHLD to inhibit zombies.
801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_SIGINFO		deliver the signal with SIGINFO structs
811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_THIRTYTWO		delivers the signal in 32-bit mode, even if the task
821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *			is running in 26-bit.
831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_ONSTACK		allows alternate signal stacks (see sigaltstack(2)).
841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_RESTART		flag to get restarting signals (which were the default long ago)
851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_NODEFER		prevents the current signal from being masked in the handler.
861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_RESETHAND		clears the handler when the signal is delivered.
871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Unix names RESETHAND and NODEFER respectively.
901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_NOCLDSTOP	0x00000001
921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_NOCLDWAIT	0x00000002
931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_SIGINFO	0x00000004
941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_THIRTYTWO	0x02000000
951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_RESTORER	0x04000000
961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_ONSTACK	0x08000000
971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_RESTART	0x10000000
981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_NODEFER	0x40000000
991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_RESETHAND	0x80000000
1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_NOMASK	SA_NODEFER
1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SA_ONESHOT	SA_RESETHAND
1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * sigaltstack controls
1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SS_ONSTACK	1
1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SS_DISABLE	2
1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define MINSIGSTKSZ	2048
1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SIGSTKSZ	8192
1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
11463b852a6b67d0820d388b0ecd0da83ccb4048b8dArnd Bergmann#include <asm-generic/signal-defs.h>
1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__
1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct old_sigaction {
1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__sighandler_t sa_handler;
1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	old_sigset_t sa_mask;
1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long sa_flags;
1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__sigrestore_t sa_restorer;
1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct sigaction {
1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__sighandler_t sa_handler;
1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long sa_flags;
1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	__sigrestore_t sa_restorer;
1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	sigset_t sa_mask;		/* mask last for extensibility */
1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct k_sigaction {
1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	struct sigaction sa;
1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#else
1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Here we must cater to libcs that poke about in kernel headers.  */
1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstruct sigaction {
1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	union {
1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  __sighandler_t _sa_handler;
1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	  void (*_sa_sigaction)(int, struct siginfo *, void *);
1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	} _u;
1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	sigset_t sa_mask;
1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	unsigned long sa_flags;
1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void (*sa_restorer)(void);
1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define sa_handler	_u._sa_handler
1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define sa_sigaction	_u._sa_sigaction
1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* __KERNEL__ */
1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct sigaltstack {
1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	void __user *ss_sp;
1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	int ss_flags;
1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	size_t ss_size;
1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} stack_t;
1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifdef __KERNEL__
1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <asm/sigcontext.h>
1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define ptrace_signal_deliver(regs, cookie) do { } while (0)
1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
165