diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 1999-06-18 05:20:00 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 1999-06-18 05:20:00 +0000 |
commit | 4eb4c3013da3dbbfb59cfd7718f9161ba458451b (patch) | |
tree | 667b0caf3a11523bbee3c70fbe0f31e5ea60cada | |
parent | 369be544ad57d1e2de923a2f1d75c994f4f385c2 (diff) |
do not include fpu regs into trapframe, according to the
lazy fpu context switching it could be well saved into pcb.
this brings trapframe to 256 bytes (including 5 spare words).
adjust all the code to deal w/ moved fpu regs save area.
-rw-r--r-- | sys/arch/hppa/hppa/genassym.cf | 4 | ||||
-rw-r--r-- | sys/arch/hppa/hppa/locore.S | 6 | ||||
-rw-r--r-- | sys/arch/hppa/hppa/process_machdep.c | 7 | ||||
-rw-r--r-- | sys/arch/hppa/include/frame.h | 4 |
4 files changed, 11 insertions, 10 deletions
diff --git a/sys/arch/hppa/hppa/genassym.cf b/sys/arch/hppa/hppa/genassym.cf index bd80afd8e94..11dd12d5911 100644 --- a/sys/arch/hppa/hppa/genassym.cf +++ b/sys/arch/hppa/hppa/genassym.cf @@ -1,4 +1,4 @@ -# $OpenBSD: genassym.cf,v 1.10 1999/06/12 17:40:01 mickey Exp $ +# $OpenBSD: genassym.cf,v 1.11 1999/06/18 05:19:52 mickey Exp $ # # Copyright (c) 1982, 1990, 1993 @@ -166,7 +166,6 @@ define TF_SR4 offsetof(struct trapframe, tf_sr4) define TF_SR5 offsetof(struct trapframe, tf_sr5) define TF_SR6 offsetof(struct trapframe, tf_sr6) define TF_SR7 offsetof(struct trapframe, tf_sr7) -define TF_FPREGS offsetof(struct trapframe, tf_fpregs) # proc fields and values struct proc @@ -187,6 +186,7 @@ struct pcb member pcb_tf member pcb_onfault member pcb_space +member pcb_fpregs struct user member u_pcb diff --git a/sys/arch/hppa/hppa/locore.S b/sys/arch/hppa/hppa/locore.S index de3f9e02c32..93dd972a96c 100644 --- a/sys/arch/hppa/hppa/locore.S +++ b/sys/arch/hppa/hppa/locore.S @@ -1,4 +1,4 @@ -/* $OpenBSD: locore.S,v 1.10 1999/06/12 17:35:10 mickey Exp $ */ +/* $OpenBSD: locore.S,v 1.11 1999/06/18 05:19:52 mickey Exp $ */ /* * Copyright (c) 1998,1999 Michael Shalayeff @@ -627,7 +627,7 @@ TLABEL(emu) comb,=,n r0, t1, $fpusw_nosave ldw p_addr(t1), t3 - ldo TF_FPREGS+pcb_tf+u_pcb(t3), t3 + ldo pcb_fpregs+u_pcb(t3), t3 fstds,ma fr0 , 8(t3) /* fr0 must be saved first */ fstds,ma fr1 , 8(t3) @@ -665,7 +665,7 @@ TLABEL(emu) $fpusw_nosave ldw p_addr(t2), t3 - ldo 31*8+TF_FPREGS+pcb_tf+u_pcb(t3), t3 + ldo 31*8+pcb_fpregs+u_pcb(t3), t3 fldds,ma -8(t3), fr31 fldds,ma -8(t3), fr30 diff --git a/sys/arch/hppa/hppa/process_machdep.c b/sys/arch/hppa/hppa/process_machdep.c index 03bdab8dd82..afe2e97dcc4 100644 --- a/sys/arch/hppa/hppa/process_machdep.c +++ b/sys/arch/hppa/hppa/process_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: process_machdep.c,v 1.2 1999/04/20 20:46:11 mickey Exp $ */ +/* $OpenBSD: process_machdep.c,v 1.3 1999/06/18 05:19:52 mickey Exp $ */ /* * Copyright (c) 1999 Michael Shalayeff @@ -35,6 +35,7 @@ #include <sys/systm.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/user.h> int process_read_regs(p, regs) @@ -60,7 +61,7 @@ process_read_fpregs(p, fpregs) struct proc *p; struct fpreg *fpregs; { - bcopy (p->p_md.md_regs->tf_fpregs, fpregs, sizeof(*fpregs)); + bcopy (p->p_addr->u_pcb.pcb_fpregs, fpregs, sizeof(*fpregs)); return 0; } @@ -69,7 +70,7 @@ process_write_fpregs(p, fpregs) struct proc *p; struct fpreg *fpregs; { - bcopy (fpregs, p->p_md.md_regs->tf_fpregs, sizeof(*fpregs)); + bcopy (fpregs, p->p_addr->u_pcb.pcb_fpregs, sizeof(*fpregs)); return 0; } diff --git a/sys/arch/hppa/include/frame.h b/sys/arch/hppa/include/frame.h index 24504a637e5..3db91df4b81 100644 --- a/sys/arch/hppa/include/frame.h +++ b/sys/arch/hppa/include/frame.h @@ -1,4 +1,4 @@ -/* $OpenBSD: frame.h,v 1.5 1999/04/20 19:49:35 mickey Exp $ */ +/* $OpenBSD: frame.h,v 1.6 1999/06/18 05:19:59 mickey Exp $ */ /* * Copyright (c) 1999 Michael Shalayeff @@ -127,7 +127,7 @@ struct trapframe { u_int tf_vtop; /* cr25 */ u_int tf_tr2; /* cr26 */ - u_int64_t tf_fpregs[HPPA_NFPREGS]; + u_int tf_pad[5]; /* pad to 256 bytes */ }; #endif /* !_LOCORE */ |