summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorcgd <cgd@NetBSD.org>1996-10-07 23:57:21 +0000
committercgd <cgd@NetBSD.org>1996-10-07 23:57:21 +0000
commitd557a6a159fdfd7934bb87030360420b95bdff37 (patch)
tree49486c9d2631767988df8f31899d0dd9c129bd8e /sys
parent5dd208e6fc200e0b6d937be6b49da823c6ba353a (diff)
change md_coredump struct to actually reflect the machine-dependent stuff
that's dumped. use it, rather than a hack, to export the info to user-land (gdb).
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/alpha/alpha/vm_machdep.c17
-rw-r--r--sys/arch/alpha/include/pcb.h3
2 files changed, 9 insertions, 11 deletions
diff --git a/sys/arch/alpha/alpha/vm_machdep.c b/sys/arch/alpha/alpha/vm_machdep.c
index 5e9d3a8a7df..dc234ee20ea 100644
--- a/sys/arch/alpha/alpha/vm_machdep.c
+++ b/sys/arch/alpha/alpha/vm_machdep.c
@@ -1,4 +1,4 @@
-/* $NetBSD: vm_machdep.c,v 1.17 1996/10/07 19:09:17 cgd Exp $ */
+/* $NetBSD: vm_machdep.c,v 1.18 1996/10/07 23:57:22 cgd Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -55,10 +55,7 @@ cpu_coredump(p, vp, cred, chdr)
{
int error;
register struct user *up = p->p_addr;
- struct cpustate {
- struct trapframe regs;
- struct fpreg fpstate;
- } cpustate;
+ struct md_coredump cpustate;
struct coreseg cseg;
extern struct proc *fpcurproc;
@@ -67,17 +64,17 @@ cpu_coredump(p, vp, cred, chdr)
chdr->c_seghdrsize = ALIGN(sizeof(cseg));
chdr->c_cpusize = sizeof(cpustate);
- cpustate.regs = *p->p_md.md_tf;
- cpustate.regs.tf_regs[FRAME_SP] = alpha_pal_rdusp(); /* XXX */
+ cpustate.md_tf = *p->p_md.md_tf;
+ cpustate.md_tf.tf_regs[FRAME_SP] = alpha_pal_rdusp(); /* XXX */
if (p->p_md.md_flags & MDP_FPUSED)
if (p == fpcurproc) {
alpha_pal_wrfen(1);
- savefpstate(&cpustate.fpstate);
+ savefpstate(&cpustate.md_fpstate);
alpha_pal_wrfen(0);
} else
- cpustate.fpstate = p->p_addr->u_pcb.pcb_fp;
+ cpustate.md_fpstate = p->p_addr->u_pcb.pcb_fp;
else
- bzero(&cpustate.fpstate, sizeof(cpustate.fpstate));
+ bzero(&cpustate.md_fpstate, sizeof(cpustate.md_fpstate));
CORE_SETMAGIC(cseg, CORESEGMAGIC, MID_ALPHA, CORE_CPU);
cseg.c_addr = 0;
diff --git a/sys/arch/alpha/include/pcb.h b/sys/arch/alpha/include/pcb.h
index 95a7895f8ca..2d0875baeb6 100644
--- a/sys/arch/alpha/include/pcb.h
+++ b/sys/arch/alpha/include/pcb.h
@@ -1,4 +1,4 @@
-/* $NetBSD: pcb.h,v 1.3 1996/07/14 04:15:27 cgd Exp $ */
+/* $NetBSD: pcb.h,v 1.4 1996/10/07 23:57:21 cgd Exp $ */
/*
* Copyright (c) 1994, 1995 Carnegie-Mellon University.
@@ -60,4 +60,5 @@ struct pcb {
*/
struct md_coredump {
struct trapframe md_tf;
+ struct fpreg md_fpstate;
};