diff --git a/libc/arch-mips/include/machine/setjmp.h b/libc/arch-mips/include/machine/setjmp.h
index 55ba7be..0237002 100644
--- a/libc/arch-mips/include/machine/setjmp.h
+++ b/libc/arch-mips/include/machine/setjmp.h
@@ -1,10 +1,56 @@
-/*	$OpenBSD: setjmp.h,v 1.2 2004/08/10 21:10:56 pefo Exp $	*/
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
 
-/* Public domain */
+#ifndef _ARCH_MIPS_MACHINE_SETJMP_H_
+#define _ARCH_MIPS_MACHINE_SETJMP_H_
 
-#ifndef _MIPS_SETJMP_H_
-#define _MIPS_SETJMP_H_
+#define _JBLEN          157    /* size, in longs, of a jmp_buf */
 
-#define	_JBLEN	157		/* size, in longs, of a jmp_buf */
+#define SC_REGMASK      (0*REGSZ)
+#define SC_STATUS       (1*REGSZ)
+#define SC_PC           (2*REGSZ)
+#define SC_REGS         (SC_PC+8)
+#define SC_FPREGS       (SC_REGS+32*8)
+#define SC_ACX          (SC_FPREGS+32*REGSZ_FP)
+#define SC_FPC_CSR      (SC_ACX+1*REGSZ)
+#define SC_FPC_EIR      (SC_ACX+2*REGSZ)
+#define SC_USED_MATH    (SC_ACX+3*REGSZ)
+#define SC_DSP          (SC_ACX+4*REGSZ)
+#define SC_MDHI         (SC_ACX+5*REGSZ)
+#define SC_MDLO         (SC_MDHI+8)
+#define SC_HI1          (SC_MDLO+8)
+#define SC_LO1          (SC_HI1+1*REGSZ)
+#define SC_HI2          (SC_HI1+2*REGSZ)
+#define SC_LO2          (SC_HI1+3*REGSZ)
+#define SC_HI3          (SC_HI1+4*REGSZ)
+#define SC_LO3          (SC_HI1+5*REGSZ)
+/* OpenBSD compatibility */
+#define SC_MASK         SC_REGMASK
+#define SC_FPUSED       SC_USED_MATH
 
-#endif /* !_MIPS_SETJMP_H_ */
+#endif /* !_ARCH_MIPS_INCLUDE_MACHINE_SETJMP_H_ */
diff --git a/libc/arch-mips/include/machine/signal.h b/libc/arch-mips/include/machine/signal.h
index 4efb856..6378c61 100644
--- a/libc/arch-mips/include/machine/signal.h
+++ b/libc/arch-mips/include/machine/signal.h
@@ -1,147 +1,58 @@
-/*	$OpenBSD: signal.h,v 1.8 2006/01/09 18:18:37 millert Exp $	*/
-
 /*
- * Copyright (c) 1992, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Ralph Campbell.
+ * Copyright (C) 2012 The Android Open Source Project
+ * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
- * 1. Redistributions of source code must retain the above copyright
+ *  * Redistributions of source code must retain the above copyright
  *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
  *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
- *
- *	@(#)signal.h	8.1 (Berkeley) 6/10/93
  */
-
-#ifndef _MIPS_SIGNAL_H_
-#define _MIPS_SIGNAL_H_
+#ifndef _ARCH_MIPS_MACHINE_SIGNAL_H_
+#define _ARCH_MIPS_MACHINE_SIGNAL_H_
 
 #include <sys/cdefs.h>
 
-#if !defined(__LANGUAGE_ASSEMBLY)
-#include <sys/types.h>
+__BEGIN_DECLS
 
-/*
- * Machine-dependent signal definitions
- */
-typedef int sig_atomic_t;
+#include <asm/signal.h>
+#include <asm/sigcontext.h>
 
-#if __BSD_VISIBLE || __XPG_VISIBLE >= 420
-
-/*
- * Information pushed on stack when a signal is delivered.
- * This is used by the kernel to restore state following
- * execution of the signal handler.  It is also made available
- * to the handler to allow it to restore state properly if
- * a non-standard exit is performed.
- */
-
-#if defined(__ANDROID__)
-
-/*
- * The Linux and OpenBSD sigcontext structures are slightly different
- * This is the Linux O32 ABI compatible sigcontext
- */
-
-struct sigcontext {
-	unsigned int sc_regmask;
-	unsigned int sc_status;
-	unsigned long long sc_pc;
-	unsigned long long sc_regs[32];
-	unsigned long long sc_fpregs[32];
-	unsigned int sc_acx;
-	unsigned int sc_fpc_csr;
-	unsigned int sc_fpc_eir;
-	unsigned int sc_used_math;
-	unsigned int sc_dsp;
-	unsigned long long sc_mdhi;
-	unsigned long long sc_mdlo;
-	unsigned long sc_hi1;
-	unsigned long sc_lo1;
-	unsigned long sc_hi2;
-	unsigned long sc_lo2;
-	unsigned long sc_hi3;
-	unsigned long sc_lo3;
-};
-
-#else
-
-struct	sigcontext {
-	long	sc_onstack;	/* sigstack state to restore */
-	long	 sc_mask;	/* signal mask to restore */
-	__register_t sc_pc;	/* pc at time of signal */
-	__register_t sc_regs[32]; /* processor regs 0 to 31 */
-	__register_t mullo;	/* mullo and mulhi registers... */
-	__register_t mulhi;	/* mullo and mulhi registers... */
-	f_register_t sc_fpregs[33]; /* fp regs 0 to 31 and csr */
-	long	sc_fpused;	/* fp has been used */
-	long	sc_fpc_eir;	/* floating point exception instruction reg */
-	long	xxx[8];		/* XXX reserved */
-};
+#ifdef _ASM_GENERIC_SIGINFO_H
+#error "You cannot include <asm/siginfo.h> before <signal.h>!"
 #endif
-#endif /* __BSD_VISIBLE || __XPG_VISIBLE >= 420 */
+#define __ARCH_SI_UID_T __kernel_uid32_t
+#include <asm/siginfo.h>
+#undef __ARCH_SI_UID_T
 
-#else /* __LANGUAGE_ASSEMBLY */
+#include <stdint.h>
 
-#ifdef __ANDROID__
+/* See comment in arch-arm/include/machine/signal.h.
+ * The MIPS kernel also uses 128-bit signal masks while defining sigset-t
+ * as a 32-bit type.
+ */
+typedef unsigned long __kernel_sigset_t[4];
 
-#define	SC_REGMASK	(0*REGSZ)
-#define	SC_STATUS	(1*REGSZ)
-#define	SC_PC		(2*REGSZ)
-#define	SC_REGS		(SC_PC+8)
-#define	SC_FPREGS	(SC_REGS+32*8)
-#define	SC_ACX		(SC_FPREGS+32*REGSZ_FP)
-#define	SC_FPC_CSR	(SC_ACX+1*REGSZ)
-#define	SC_FPC_EIR	(SC_ACX+2*REGSZ)
-#define	SC_USED_MATH	(SC_ACX+3*REGSZ)
-#define	SC_DSP		(SC_ACX+4*REGSZ)
-#define	SC_MDHI		(SC_ACX+5*REGSZ)
-#define	SC_MDLO		(SC_MDHI+8)
-#define	SC_HI1		(SC_MDLO+8)
-#define	SC_LO1		(SC_HI1+1*REGSZ)
-#define	SC_HI2		(SC_HI1+2*REGSZ)
-#define	SC_LO2		(SC_HI1+3*REGSZ)
-#define	SC_HI3		(SC_HI1+4*REGSZ)
-#define	SC_LO3		(SC_HI1+5*REGSZ)
-/* OpenBSD compatibility */
-#define	SC_MASK		SC_REGMASK
-#define	SC_FPUSED	SC_USED_MATH
+/* Note: Unlike ARM and x86, the MIPS <asm/signal.h> properly defines _NSIG
+ * and thus SIGRTMAX. */
 
-#else
+__END_DECLS
 
-#define SC_ONSTACK	(0 * REGSZ)
-#define	SC_MASK		(1 * REGSZ)
-#define	SC_PC		(2 * REGSZ)
-#define	SC_REGS		(3 * REGSZ)
-#define	SC_MULLO	(35 * REGSZ)
-#define	SC_MULHI	(36 * REGSZ)
-#define	SC_FPREGS	(37 * REGSZ)
-#define	SC_FPUSED	(70 * REGSZ)
-#define	SC_FPC_EIR	(71 * REGSZ)
-
-#endif /* __ANDROID__ */
-
-#endif /* __LANGUAGE_ASSEMBLY */
-
-#endif	/* !_MIPS_SIGNAL_H_ */
+#endif /* _ARCH_MIPS_MACHINE_SIGNAL_H_ */
diff --git a/libc/arch-mips/include/machine/ucontext.h b/libc/arch-mips/include/machine/ucontext.h
new file mode 100644
index 0000000..df3b64b
--- /dev/null
+++ b/libc/arch-mips/include/machine/ucontext.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _ARCH_MIPS_SYS_UCONTEXT_H_
+#define _ARCH_MIPS_SYS_UCONTEXT_H_
+
+#include <signal.h>
+#include <stdint.h>
+
+__BEGIN_DECLS
+
+/* Technical note:
+ *
+ * On MIPS, there are differences in the way GLibc and the Linux kernel declare
+ * ucontext_t:
+ *
+ *  - The kernel implements 'uc_mcontext' with a 'struct sigcontext',
+ *    while GLibc defines 'mcontext_t' in a binary-compatible way
+ *    (same size, same binary layout), but with different field naming/access
+ *    convention.
+ *
+ *    The biggest difference is the naming of the fields. The kernel uses
+ *    a 'sc_' prefix (e.g. "sc_gregs[]"), while GLibc does not ("gregs[]").
+ *
+ *    For maximum portability of existing client code, this header follows
+ *    the GLibc convention. Client code, and the C library, should never
+ *    try to include <asm/ucontext.h>
+ *
+ *  Apart from that, all floating point state is stored in uc_mcontext
+ *  in the same way, which is much simpler than ARM and x86 schemes for it.
+ *  As such, there is no _libc_fpstate.
+ *
+ *  Reference source files:
+ *    $KERNEL/arch/mips/include/asm/sigcontext.h
+ *    $KERNEL/arch/mips/include/asm/ucontext.h
+ *
+ *    $GLIBC/sysdeps/unix/sysv/linux/mips/getcontext.S
+ *    $GLIBC/sysdeps/unix/sysv/linux/mips/setcontext.S
+ *    $GLIBC/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
+ */
+
+/* First, the kernel-compatible version, for reference. */
+typedef struct __kernel_ucontext {
+  unsigned long              uc_flags;
+  struct __kernel_ucontext*  uc_link;
+  stack_t                    uc_stack;
+  struct sigcontext          uc_mcontext;
+  __kernel_sigset_t          uc_sigmask;
+} __kernel_ucontext_t;
+
+/* Second, the GLibc-compatible version */
+
+__extension__ /* Required to build in ANSI C mode */
+typedef unsigned long long greg_t;
+
+#define NGREG   32
+#define NFPREG  32
+
+typedef greg_t  gregset_t[NGREG];
+
+typedef struct fpregset {
+  union {
+    double fp_dregs[NFPREG];
+    struct {
+      float     _fp_fregs;
+      unsigned  _fp_pad;
+    } fp_fregs[NFPREG];
+  } fp_r;
+} fpregset_t;
+
+#ifndef _MIPS_SIM
+#error "_MIPS_SIM should be defined by your Android MIPS toolchain!"
+#endif
+
+#ifndef _OABI32
+#error "_OABI32 should be defined by your Android MIPS toolchain!"
+#endif
+
+#if _MIPS_SIM != _OABI32
+#error "Only _OABI32 is supported on Android MIPS!"
+#endif
+
+typedef struct {
+  unsigned   regmask;
+  unsigned   status;
+  greg_t     pc;
+  gregset_t  gregs;
+  fpregset_t fpregs;
+  unsigned   fp_owned;
+  unsigned   fpc_csr;
+  unsigned   fpc_eir;
+  unsigned   used_math;
+  unsigned   dsp;
+  greg_t     mdhi;
+  greg_t     mdlo;
+  unsigned   hi1;
+  unsigned   lo1;
+  unsigned   hi2;
+  unsigned   lo2;
+  unsigned   hi3;
+  unsigned   lo3;
+} mcontext_t;
+
+typedef struct ucontext {
+  uint32_t          uc_flags;
+  struct ucontext*  uc_link;
+  stack_t           uc_stack;
+  mcontext_t        uc_mcontext;
+  /* Only expose the signals in Bionic's 32-bit sigset_t.
+   * The _unused field is required padding from the kernel. */
+  sigset_t          uc_sigmask;
+  char _unused[sizeof(__kernel_sigset_t) - sizeof(sigset_t)];
+} ucontext_t;
+
+__END_DECLS
+
+#endif /* _ARCH_MIPS_SYS_UCONTEXT_H_ */
