xref: /netbsd-src/sys/compat/linux/arch/mips/linux_signal.h (revision 803cade3fed2ac226542314064b95ad3648cf568)
1*803cade3Schristos /* $NetBSD: linux_signal.h,v 1.14 2015/11/14 13:29:35 christos Exp $ */
221f970e3Smanu 
321f970e3Smanu /*-
421f970e3Smanu  * Copyright (c) 1995, 1998, 2001 The NetBSD Foundation, Inc.
521f970e3Smanu  * All rights reserved.
621f970e3Smanu  *
721f970e3Smanu  * This code is derived from software contributed to The NetBSD Foundation
821f970e3Smanu  * by Frank van der Linden, Eric Haszlakiewicz and Emmanuel Dreyfus.
921f970e3Smanu  *
1021f970e3Smanu  * Redistribution and use in source and binary forms, with or without
1121f970e3Smanu  * modification, are permitted provided that the following conditions
1221f970e3Smanu  * are met:
1321f970e3Smanu  * 1. Redistributions of source code must retain the above copyright
1421f970e3Smanu  *    notice, this list of conditions and the following disclaimer.
1521f970e3Smanu  * 2. Redistributions in binary form must reproduce the above copyright
1621f970e3Smanu  *    notice, this list of conditions and the following disclaimer in the
1721f970e3Smanu  *    documentation and/or other materials provided with the distribution.
1821f970e3Smanu  *
1921f970e3Smanu  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
2021f970e3Smanu  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
2121f970e3Smanu  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
2221f970e3Smanu  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
2321f970e3Smanu  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2421f970e3Smanu  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2521f970e3Smanu  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2621f970e3Smanu  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2721f970e3Smanu  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2821f970e3Smanu  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2921f970e3Smanu  * POSSIBILITY OF SUCH DAMAGE.
3021f970e3Smanu  */
3121f970e3Smanu 
3221f970e3Smanu #ifndef _MIPS_LINUX_SIGNAL_H
3321f970e3Smanu #define _MIPS_LINUX_SIGNAL_H
3421f970e3Smanu 
3521f970e3Smanu /*
362207c506Smanu  * From Linux's include/asm-mips/ptrace.h
372207c506Smanu  */
382207c506Smanu struct linux_pt_regs {
392207c506Smanu 	unsigned long lpad0[6];
402207c506Smanu 	unsigned long lregs[32];
412207c506Smanu 	unsigned long llo;
422207c506Smanu 	unsigned long lhi;
43948a7fa8Smanu 	unsigned long lcp0_epc;
442207c506Smanu 	unsigned long lcp0_badvaddr;
452207c506Smanu 	unsigned long lcp0_status;
462207c506Smanu 	unsigned long lcp0_cause;
472207c506Smanu };
482207c506Smanu 
492207c506Smanu /*
5021f970e3Smanu  * Everything is from Linux's include/asm-mips/signal.h
5121f970e3Smanu  */
5221f970e3Smanu #define LINUX_SIGHUP	 	1
5321f970e3Smanu #define LINUX_SIGINT		2
5421f970e3Smanu #define LINUX_SIGQUIT		3
5521f970e3Smanu #define LINUX_SIGILL		4
5621f970e3Smanu #define LINUX_SIGTRAP		5
5721f970e3Smanu #define LINUX_SIGABRT		6
5821f970e3Smanu #define LINUX_SIGIOT		6
5921f970e3Smanu #define LINUX_SIGEMT		7
6021f970e3Smanu #define LINUX_SIGFPE		8
6121f970e3Smanu #define LINUX_SIGKILL		9
6221f970e3Smanu #define LINUX_SIGBUS		10
6321f970e3Smanu #define LINUX_SIGSEGV		11
6421f970e3Smanu #define LINUX_SIGSYS		12
6521f970e3Smanu #define LINUX_SIGPIPE		13
6621f970e3Smanu #define LINUX_SIGALRM		14
6721f970e3Smanu #define LINUX_SIGTERM		15
6821f970e3Smanu #define LINUX_SIGUSR1		16
6921f970e3Smanu #define LINUX_SIGUSR2		17
7021f970e3Smanu #define LINUX_SIGCHLD		18
7121f970e3Smanu #define LINUX_SIGCLD		18
7221f970e3Smanu #define LINUX_SIGPWR		19
7321f970e3Smanu #define LINUX_SIGWINCH		20
7421f970e3Smanu #define LINUX_SIGURG		21
7521f970e3Smanu #define LINUX_SIGIO		22
7621f970e3Smanu #define LINUX_SIGPOLL		22
7721f970e3Smanu #define LINUX_SIGSTOP		23
7821f970e3Smanu #define LINUX_SIGTSTP		24
7921f970e3Smanu #define LINUX_SIGCONT		25
8021f970e3Smanu #define LINUX_SIGTTIN		26
8121f970e3Smanu #define LINUX_SIGTTOU		27
8221f970e3Smanu #define LINUX_SIGVTALRM		28
8321f970e3Smanu #define LINUX_SIGPROF		29
8421f970e3Smanu #define LINUX_SIGXCPU		30
8521f970e3Smanu #define LINUX_SIGXFSZ		31
8621f970e3Smanu 
87bda4b15eSchristos /* Min/max real-time linux signal */
8821f970e3Smanu #define LINUX_SIGRTMIN		32
89bda4b15eSchristos #define LINUX_SIGRTMAX		(LINUX__NSIG - 1)
9021f970e3Smanu 
9121f970e3Smanu #define LINUX__NSIG		128
9227d1edf7Smanu #if defined(ELFSIZE) && (ELFSIZE == 64)
9327d1edf7Smanu #define LINUX__NSIG_BPW		64
9427d1edf7Smanu #else
9521f970e3Smanu #define LINUX__NSIG_BPW		32
9627d1edf7Smanu #endif
9721f970e3Smanu #define LINUX__NSIG_WORDS (LINUX__NSIG / LINUX__NSIG_BPW)
9821f970e3Smanu 
9921f970e3Smanu #define LINUX_SIG_BLOCK		1
10021f970e3Smanu #define LINUX_SIG_UNBLOCK	2
10121f970e3Smanu #define LINUX_SIG_SETMASK	3
10221f970e3Smanu 
10321f970e3Smanu /* sa_flags */
10421f970e3Smanu #define LINUX_SA_NOCLDSTOP	0x00000001
10521f970e3Smanu #define LINUX_SA_SIGINFO	0x00000008
1065af2ddd2Srafal #define LINUX_SA_NOCLDWAIT	0x00010000
10721f970e3Smanu #define LINUX_SA_ONSTACK	0x08000000
10821f970e3Smanu #define LINUX_SA_RESTART	0x10000000
10921f970e3Smanu #define LINUX_SA_NODEFER	0x40000000
11021f970e3Smanu #define LINUX_SA_RESETHAND	0x80000000
11121f970e3Smanu #define LINUX_SA_NOMASK		LINUX_SA_NODEFER
11221f970e3Smanu #define LINUX_SA_ONESHOT	LINUX_SA_RESETHAND
113*803cade3Schristos #define LINUX_SA_ALLBITS	0xd8010009
114*803cade3Schristos /* XXX LINUX_SA_RESTORER has been deprecated; not used any version of glibc */
11521f970e3Smanu 
116d359ae5cSchristos #define	LINUX_MINSIGSTKSZ	2048
117d359ae5cSchristos 
118f2af9174Sdsl typedef void (*linux___sighandler_t)(int);
11921f970e3Smanu 
12021f970e3Smanu typedef unsigned long linux_old_sigset_t;
12121f970e3Smanu typedef struct {
12221f970e3Smanu 	unsigned long sig[LINUX__NSIG_WORDS];
12321f970e3Smanu } linux_sigset_t;
12421f970e3Smanu 
12521f970e3Smanu /* Used in rt_* calls. No old_sigaction is defined for MIPS */
12621f970e3Smanu struct linux_sigaction {
127116bcb05Schristos 	unsigned int		linux_sa_flags;
128116bcb05Schristos 	linux___sighandler_t	linux_sa_handler;
129116bcb05Schristos 	linux_sigset_t		linux_sa_mask;
130f2af9174Sdsl 	void			(*linux_sa_restorer)(void);
131116bcb05Schristos 	int			linux_sa_resv[1];
13221f970e3Smanu };
13321f970e3Smanu 
13421f970e3Smanu struct linux_k_sigaction {
13521f970e3Smanu 	struct linux_sigaction sa;
13621f970e3Smanu };
13721f970e3Smanu 
1382207c506Smanu struct linux_old_sigaction {
139116bcb05Schristos 	unsigned int		linux_sa_flags;
140116bcb05Schristos 	linux___sighandler_t	linux_sa_handler;
141116bcb05Schristos 	linux_old_sigset_t	linux_sa_mask;
142f2af9174Sdsl 	void			(*linux_sa_restorer)(void);
143116bcb05Schristos 	int			linux_sa_resv[1];
1442207c506Smanu };
1452207c506Smanu 
14621f970e3Smanu #define	LINUX_SS_ONSTACK	1
14721f970e3Smanu #define	LINUX_SS_DISABLE	2
14821f970e3Smanu 
14921f970e3Smanu #define	LINUX_MINSIGSTKSZ	2048
15021f970e3Smanu #define	LINUX_SIGSTKSZ		8192
15121f970e3Smanu 
15221f970e3Smanu struct linux_sigaltstack {
15321f970e3Smanu 	void *ss_sp;
15421f970e3Smanu 	size_t ss_size;
15521f970e3Smanu 	int ss_flags;
15621f970e3Smanu };
15721f970e3Smanu typedef struct linux_sigaltstack linux_stack_t; /* XXX really needed ? */
15821f970e3Smanu 
15921f970e3Smanu #endif /* !_MIPS_LINUX_SIGNAL_H */
160