summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/libpthread/arch/mips64/uthread_machdep.c21
-rw-r--r--lib/libpthread/arch/mips64/uthread_machdep.h4
-rw-r--r--lib/libpthread/arch/mips64/uthread_machdep_asm.S64
3 files changed, 45 insertions, 44 deletions
diff --git a/lib/libpthread/arch/mips64/uthread_machdep.c b/lib/libpthread/arch/mips64/uthread_machdep.c
index c2e47db96ad..dcfaf23f5b2 100644
--- a/lib/libpthread/arch/mips64/uthread_machdep.c
+++ b/lib/libpthread/arch/mips64/uthread_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uthread_machdep.c,v 1.1 2004/08/11 17:41:34 pefo Exp $ */
+/* $OpenBSD: uthread_machdep.c,v 1.2 2004/09/09 16:59:21 pefo Exp $ */
/* David Leonard, <d@csee.uq.edu.au>. Public domain. */
/*
@@ -11,13 +11,14 @@
#define ALIGNBYTES 0x3
struct frame {
- int s[9]; /* s0..s7 */
- int _fill;
+ long s[9]; /* s0..s7 */
+ long _fill;
double f[3]; /* $f0..$f2 */
- int t9; /* XXX only used when bootstrapping */
- int ra;
+ long t9; /* XXX only used when bootstrapping */
+ long ra;
- int arg[4], cra, cfp; /* ABI space for debuggers */
+/* XXX args should not be here for N32 or N64 ABIs */
+ long arg[4], cra, cfp; /* ABI space for debuggers */
};
/*
@@ -34,13 +35,13 @@ _thread_machdep_init(statep, base, len, entry)
struct frame *f;
/* Locate the initial frame, aligned at the top of the stack */
- f = (struct frame *)(((int)base + len - sizeof *f) & ~ALIGNBYTES);
+ f = (struct frame *)(((long)base + len - sizeof *f) & ~ALIGNBYTES);
f->cra = f->cfp = 0; /* for debugger */
- f->ra = (int)entry;
- f->t9 = (int)entry;
+ f->ra = (long)entry;
+ f->t9 = (long)entry;
- statep->frame = (int)f;
+ statep->frame = (long)f;
}
void
diff --git a/lib/libpthread/arch/mips64/uthread_machdep.h b/lib/libpthread/arch/mips64/uthread_machdep.h
index 7e95f299456..e3d31729b7b 100644
--- a/lib/libpthread/arch/mips64/uthread_machdep.h
+++ b/lib/libpthread/arch/mips64/uthread_machdep.h
@@ -1,6 +1,6 @@
-/* $OpenBSD: uthread_machdep.h,v 1.1 2004/08/11 17:41:34 pefo Exp $ */
+/* $OpenBSD: uthread_machdep.h,v 1.2 2004/09/09 16:59:21 pefo Exp $ */
/* David Leonard, <d@csee.uq.edu.au>. Public domain. */
struct _machdep_state {
- int frame;
+ long frame;
};
diff --git a/lib/libpthread/arch/mips64/uthread_machdep_asm.S b/lib/libpthread/arch/mips64/uthread_machdep_asm.S
index b6e8943f336..d289596748f 100644
--- a/lib/libpthread/arch/mips64/uthread_machdep_asm.S
+++ b/lib/libpthread/arch/mips64/uthread_machdep_asm.S
@@ -1,52 +1,52 @@
-/* $OpenBSD: uthread_machdep_asm.S,v 1.1 2004/08/11 17:41:34 pefo Exp $ */
+/* $OpenBSD: uthread_machdep_asm.S,v 1.2 2004/09/09 16:59:21 pefo Exp $ */
/* David Leonard, <d@csee.uq.edu.au>. Public domain. */
#include <machine/asm.h>
-#define SOFF(n) ((n)*4)
-#define FPOFF(n) (SOFF(9) + 4 + (n)*8)
-#define REGOFF(n) (FPOFF(3) + (n)*4)
+#define SOFF(n) ((n)*REGSZ)
+#define FPOFF(n) (SOFF(9) + REGSZ + (n)*8)
+#define REGOFF(n) (FPOFF(3) + (n)*REGSZ)
-#define FRAMESIZE (REGOFF(2) + 4*4+4+4)
+#define FRAMESIZE (REGOFF(2) + REGSZ*4+REGSZ+REGSZ)
NON_LEAF(_thread_machdep_switch, FRAMESIZE, ra)
- add sp, sp, -FRAMESIZE
-
- sw s0, SOFF(0)(sp)
- sw s1, SOFF(1)(sp)
- sw s2, SOFF(2)(sp)
- sw s3, SOFF(3)(sp)
- sw s4, SOFF(4)(sp)
- sw s5, SOFF(5)(sp)
- sw s6, SOFF(6)(sp)
- sw s7, SOFF(7)(sp)
- sw s8, SOFF(8)(sp)
+ PTR_ADDU sp, sp, -FRAMESIZE
+
+ REG_S s0, SOFF(0)(sp)
+ REG_S s1, SOFF(1)(sp)
+ REG_S s2, SOFF(2)(sp)
+ REG_S s3, SOFF(3)(sp)
+ REG_S s4, SOFF(4)(sp)
+ REG_S s5, SOFF(5)(sp)
+ REG_S s6, SOFF(6)(sp)
+ REG_S s7, SOFF(7)(sp)
+ REG_S s8, SOFF(8)(sp)
s.d $f0, FPOFF(0)(sp) /* XXX why? */
s.d $f2, FPOFF(1)(sp)
s.d $f4, FPOFF(2)(sp)
- sw t9, REGOFF(0)(sp)
- sw ra, REGOFF(1)(sp)
+ REG_S t9, REGOFF(0)(sp)
+ REG_S ra, REGOFF(1)(sp)
- sw sp, 0(a1)
- lw sp, 0(a0)
+ REG_S sp, 0(a1)
+ REG_L sp, 0(a0)
.set noreorder /* avoid nops */
- lw ra, REGOFF(1)(sp)
- lw t9, REGOFF(0)(sp)
+ REG_L ra, REGOFF(1)(sp)
+ REG_L t9, REGOFF(0)(sp)
l.d $f4, FPOFF(2)(sp)
l.d $f2, FPOFF(1)(sp)
l.d $f0, FPOFF(0)(sp)
- lw s8, SOFF(8)(sp)
- lw s7, SOFF(7)(sp)
- lw s6, SOFF(6)(sp)
- lw s5, SOFF(5)(sp)
- lw s4, SOFF(4)(sp)
- lw s3, SOFF(3)(sp)
- lw s2, SOFF(2)(sp)
- lw s1, SOFF(1)(sp)
- lw s0, SOFF(0)(sp)
+ REG_L s8, SOFF(8)(sp)
+ REG_L s7, SOFF(7)(sp)
+ REG_L s6, SOFF(6)(sp)
+ REG_L s5, SOFF(5)(sp)
+ REG_L s4, SOFF(4)(sp)
+ REG_L s3, SOFF(3)(sp)
+ REG_L s2, SOFF(2)(sp)
+ REG_L s1, SOFF(1)(sp)
+ REG_L s0, SOFF(0)(sp)
.set reorder
- add sp, sp, FRAMESIZE
+ PTR_ADDU sp, sp, FRAMESIZE
j ra
END(_thread_machdep_switch)