summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/mips/bits
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2006-11-04 19:50:20 +0000
committerEric Andersen <andersen@codepoet.org>2006-11-04 19:50:20 +0000
commitcb12600bc59ec9211ecb5be3083e66f7c6c6d9ef (patch)
treead8ca820494baaeaada85b9d30a702d68b461936 /libc/sysdeps/linux/mips/bits
parent141da0f0b098b17499c6c6e02a7d2cacc1d6d3ba (diff)
mips64 patch from Atsushi Nemoto:
The mips64 N32/N64 ABI have a bit different register usage convention. Also the register size for these ABI is 8 byte. Use ld/sd for them.
Diffstat (limited to 'libc/sysdeps/linux/mips/bits')
-rw-r--r--libc/sysdeps/linux/mips/bits/setjmp.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/mips/bits/setjmp.h b/libc/sysdeps/linux/mips/bits/setjmp.h
index 4eb8e9f2a..08e74fe0a 100644
--- a/libc/sysdeps/linux/mips/bits/setjmp.h
+++ b/libc/sysdeps/linux/mips/bits/setjmp.h
@@ -24,6 +24,8 @@
# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
#endif
+#include <sgidefs.h>
+
typedef struct
{
/* Program counter. */
@@ -33,7 +35,11 @@ typedef struct
void * __sp;
/* Callee-saved registers s0 through s7. */
+#if _MIPS_SIM == _MIPS_SIM_ABI32
int __regs[8];
+#else
+ long long __regs[8];
+#endif
/* The frame pointer. */
void * __fp;
@@ -45,7 +51,11 @@ typedef struct
int __fpc_csr;
/* Callee-saved floating point registers. */
+#if _MIPS_SIM == _MIPS_SIM_ABI64
+ double __fpregs[8];
+#else /* N32 || O32 */
double __fpregs[6];
+#endif /* N32 || O32 */
} __jmp_buf[1];
#ifdef __USE_MISC