diff options
Diffstat (limited to 'sys/arch/alpha/alpha/process_machdep.c')
-rw-r--r-- | sys/arch/alpha/alpha/process_machdep.c | 44 |
1 files changed, 30 insertions, 14 deletions
diff --git a/sys/arch/alpha/alpha/process_machdep.c b/sys/arch/alpha/alpha/process_machdep.c index 4e15522218f..5de30a17b88 100644 --- a/sys/arch/alpha/alpha/process_machdep.c +++ b/sys/arch/alpha/alpha/process_machdep.c @@ -1,4 +1,4 @@ -/* $OpenBSD: process_machdep.c,v 1.6 2002/03/12 11:58:14 art Exp $ */ +/* $OpenBSD: process_machdep.c,v 1.7 2002/03/14 00:42:20 miod Exp $ */ /* $NetBSD: process_machdep.c,v 1.7 1996/07/11 20:14:21 cgd Exp $ */ /*- @@ -108,6 +108,24 @@ process_read_regs(p, regs) } int +process_read_fpregs(p, regs) + struct proc *p; + struct fpreg *regs; +{ + + if (p == fpcurproc) { + alpha_pal_wrfen(1); + savefpstate(process_fpframe(p)); + alpha_pal_wrfen(0); + } + + bcopy(process_fpframe(p), regs, sizeof(struct fpreg)); + return (0); +} + +#ifdef PTRACE + +int process_write_regs(p, regs) struct proc *p; struct reg *regs; @@ -120,29 +138,25 @@ process_write_regs(p, regs) } int -process_set_pc(p, addr) +process_sstep(p, sstep) struct proc *p; - caddr_t addr; + int sstep; { - struct trapframe *frame = process_frame(p); - frame->tf_regs[FRAME_PC] = (u_int64_t)addr; + if (sstep) + return (EINVAL); + return (0); } int -process_read_fpregs(p, regs) +process_set_pc(p, addr) struct proc *p; - struct fpreg *regs; + caddr_t addr; { + struct trapframe *frame = process_frame(p); - if (p == fpcurproc) { - alpha_pal_wrfen(1); - savefpstate(process_fpframe(p)); - alpha_pal_wrfen(0); - } - - bcopy(process_fpframe(p), regs, sizeof(struct fpreg)); + frame->tf_regs[FRAME_PC] = (u_int64_t)addr; return (0); } @@ -348,3 +362,5 @@ process_sstep(struct proc *p, int sstep) return (0); } + +#endif /* PTRACE */ |