1#ifndef _UAPI__SPARC_SIGNAL_H
2#define _UAPI__SPARC_SIGNAL_H
3
4#include <asm/sigcontext.h>
5#include <linux/compiler.h>
6
7
8/* On the Sparc the signal handlers get passed a 'sub-signal' code
9 * for certain signal types, which we document here.
10 */
11#define SIGHUP		 1
12#define SIGINT		 2
13#define SIGQUIT		 3
14#define SIGILL		 4
15#define    SUBSIG_STACK       0
16#define    SUBSIG_ILLINST     2
17#define    SUBSIG_PRIVINST    3
18#define    SUBSIG_BADTRAP(t)  (0x80 + (t))
19
20#define SIGTRAP		 5
21#define SIGABRT		 6
22#define SIGIOT		 6
23
24#define SIGEMT           7
25#define    SUBSIG_TAG    10
26
27#define SIGFPE		 8
28#define    SUBSIG_FPDISABLED     0x400
29#define    SUBSIG_FPERROR        0x404
30#define    SUBSIG_FPINTOVFL      0x001
31#define    SUBSIG_FPSTSIG        0x002
32#define    SUBSIG_IDIVZERO       0x014
33#define    SUBSIG_FPINEXACT      0x0c4
34#define    SUBSIG_FPDIVZERO      0x0c8
35#define    SUBSIG_FPUNFLOW       0x0cc
36#define    SUBSIG_FPOPERROR      0x0d0
37#define    SUBSIG_FPOVFLOW       0x0d4
38
39#define SIGKILL		 9
40#define SIGBUS          10
41#define    SUBSIG_BUSTIMEOUT    1
42#define    SUBSIG_ALIGNMENT     2
43#define    SUBSIG_MISCERROR     5
44
45#define SIGSEGV		11
46#define    SUBSIG_NOMAPPING     3
47#define    SUBSIG_PROTECTION    4
48#define    SUBSIG_SEGERROR      5
49
50#define SIGSYS		12
51
52#define SIGPIPE		13
53#define SIGALRM		14
54#define SIGTERM		15
55#define SIGURG          16
56
57/* SunOS values which deviate from the Linux/i386 ones */
58#define SIGSTOP		17
59#define SIGTSTP		18
60#define SIGCONT		19
61#define SIGCHLD		20
62#define SIGTTIN		21
63#define SIGTTOU		22
64#define SIGIO		23
65#define SIGPOLL		SIGIO   /* SysV name for SIGIO */
66#define SIGXCPU		24
67#define SIGXFSZ		25
68#define SIGVTALRM	26
69#define SIGPROF		27
70#define SIGWINCH	28
71#define SIGLOST		29
72#define SIGPWR		SIGLOST
73#define SIGUSR1		30
74#define SIGUSR2		31
75
76/* Most things should be clean enough to redefine this at will, if care
77   is taken to make libc match.  */
78
79#define __OLD_NSIG	32
80#define __NEW_NSIG      64
81#ifdef __arch64__
82#define _NSIG_BPW       64
83#else
84#define _NSIG_BPW       32
85#endif
86#define _NSIG_WORDS     (__NEW_NSIG / _NSIG_BPW)
87
88#define SIGRTMIN       32
89#define SIGRTMAX       __NEW_NSIG
90
91#if defined(__KERNEL__) || defined(__WANT_POSIX1B_SIGNALS__)
92#define _NSIG			__NEW_NSIG
93#define __new_sigset_t		sigset_t
94#define __new_sigaction		sigaction
95#define __new_sigaction32	sigaction32
96#define __old_sigset_t		old_sigset_t
97#define __old_sigaction		old_sigaction
98#define __old_sigaction32	old_sigaction32
99#else
100#define _NSIG			__OLD_NSIG
101#define NSIG			_NSIG
102#define __old_sigset_t		sigset_t
103#define __old_sigaction		sigaction
104#define __old_sigaction32	sigaction32
105#endif
106
107#ifndef __ASSEMBLY__
108
109typedef unsigned long __old_sigset_t;            /* at least 32 bits */
110
111typedef struct {
112       unsigned long sig[_NSIG_WORDS];
113} __new_sigset_t;
114
115/* A SunOS sigstack */
116struct sigstack {
117	/* XXX 32-bit pointers pinhead XXX */
118	char *the_stack;
119	int   cur_status;
120};
121
122/* Sigvec flags */
123#define _SV_SSTACK    1u    /* This signal handler should use sig-stack */
124#define _SV_INTR      2u    /* Sig return should not restart system call */
125#define _SV_RESET     4u    /* Set handler to SIG_DFL upon taken signal */
126#define _SV_IGNCHILD  8u    /* Do not send SIGCHLD */
127
128/*
129 * sa_flags values: SA_STACK is not currently supported, but will allow the
130 * usage of signal stacks by using the (now obsolete) sa_restorer field in
131 * the sigaction structure as a stack pointer. This is now possible due to
132 * the changes in signal handling. LBT 010493.
133 * SA_RESTART flag to get restarting signals (which were the default long ago)
134 */
135#define SA_NOCLDSTOP	_SV_IGNCHILD
136#define SA_STACK	_SV_SSTACK
137#define SA_ONSTACK	_SV_SSTACK
138#define SA_RESTART	_SV_INTR
139#define SA_ONESHOT	_SV_RESET
140#define SA_NODEFER	0x20u
141#define SA_NOCLDWAIT    0x100u
142#define SA_SIGINFO      0x200u
143
144#define SA_NOMASK	SA_NODEFER
145
146#define SIG_BLOCK          0x01	/* for blocking signals */
147#define SIG_UNBLOCK        0x02	/* for unblocking signals */
148#define SIG_SETMASK        0x04	/* for setting the signal mask */
149
150#define MINSIGSTKSZ	4096
151#define SIGSTKSZ	16384
152
153
154#include <asm-generic/signal-defs.h>
155
156#ifndef __KERNEL__
157struct __new_sigaction {
158	__sighandler_t		sa_handler;
159	unsigned long		sa_flags;
160	__sigrestore_t		sa_restorer;  /* not used by Linux/SPARC yet */
161	__new_sigset_t		sa_mask;
162};
163
164struct __old_sigaction {
165	__sighandler_t		sa_handler;
166	__old_sigset_t		sa_mask;
167	unsigned long		sa_flags;
168	void			(*sa_restorer)(void);  /* not used by Linux/SPARC yet */
169};
170#endif
171
172typedef struct sigaltstack {
173	void			__user *ss_sp;
174	int			ss_flags;
175	size_t			ss_size;
176} stack_t;
177
178
179#endif /* !(__ASSEMBLY__) */
180
181#endif /* _UAPI__SPARC_SIGNAL_H */
182