about summary refs log tree commit diff
path: root/arch/mips/bits/signal.h
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-07-11 04:22:13 -0400
committerRich Felker <dalias@aerifal.cx>2012-07-11 04:22:13 -0400
commit6315004f6102dca44c4ba50654a36967b8b9c2a6 (patch)
tree7b48d4ac93ecb9993ffc2d01c8762a4e954d4000 /arch/mips/bits/signal.h
parentcd8d72451662f0157d06fcf666669db543dcea3b (diff)
downloadmusl-6315004f6102dca44c4ba50654a36967b8b9c2a6.tar.gz
musl-6315004f6102dca44c4ba50654a36967b8b9c2a6.tar.xz
musl-6315004f6102dca44c4ba50654a36967b8b9c2a6.zip
initial version of mips (o32) port, based on work by Richard Pennington (rdp)
basically, this version of the code was obtained by starting with
rdp's work from his ellcc source tree, adapting it to musl's build
system and coding style, auditing the bits headers for discrepencies
with kernel definitions or glibc/LSB ABI or large file issues, fixing
up incompatibility with the old binutils from aboriginal linux, and
adding some new special cases to deal with the oddities of sigaction
and pipe syscall interfaces on mips.

at present, minimal test programs work, but some interfaces are broken
or missing. threaded programs probably will not link.
Diffstat (limited to 'arch/mips/bits/signal.h')
-rw-r--r--arch/mips/bits/signal.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/arch/mips/bits/signal.h b/arch/mips/bits/signal.h
new file mode 100644
index 00000000..aed372eb
--- /dev/null
+++ b/arch/mips/bits/signal.h
@@ -0,0 +1,73 @@
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+
+typedef struct {
+	unsigned long __regs[21];
+} mcontext_t;
+
+typedef struct __ucontext {
+	unsigned long uc_flags;
+	struct __ucontext *uc_link;
+	stack_t uc_stack;
+	mcontext_t uc_mcontext;
+	sigset_t uc_sigmask;
+	unsigned long uc_regspace[128];
+} ucontext_t;
+
+#define SA_NOCLDSTOP  1
+#define SA_NOCLDWAIT  2
+#define SA_SIGINFO    4
+#define SA_ONSTACK    0x08000000
+#define SA_RESTART    0x10000000
+#define SA_NODEFER    0x40000000
+#define SA_RESETHAND  0x80000000
+#define SA_RESTORER   0x04000000
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+struct sigcontext
+{
+	unsigned sc_regmask, sc_status;
+	unsigned long long sc_pc, sc_regs[32], sc_fpregs[32];
+	unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp;
+	unsigned long long sc_mdhi, sc_mdlo;
+	unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3;
+};
+#define NSIG      64
+#endif
+
+#endif
+
+#define SIGHUP    1
+#define SIGINT    2
+#define SIGQUIT   3
+#define SIGILL    4
+#define SIGTRAP   5
+#define SIGABRT   6
+#define SIGIOT    SIGABRT
+#define SIGSTKFLT 7
+#define SIGFPE    8
+#define SIGKILL   9
+#define SIGBUS    10
+#define SIGSEGV   11
+#define SIGSYS    12
+#define SIGPIPE   13
+#define SIGALRM   14
+#define SIGTERM   15
+#define SIGUSR1   16
+#define SIGUSR2   17
+#define SIGCHLD   18
+#define SIGPWR    19
+#define SIGWINCH  20
+#define SIGURG    21
+#define SIGIO     22
+#define SIGPOLL   SIGIO
+#define SIGSTOP   23
+#define SIGTSTP   24
+#define SIGCONT   25
+#define SIGTTIN   26
+#define SIGTTOU   27
+#define SIGVTALRM 28
+#define SIGPROF   29
+#define SIGXCPU   30
+#define SIGXFSZ   31
+#define SIGUNUSED SIGSYS