diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-12-26 18:07:01 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 1995-12-26 18:07:01 +0000 |
commit | 831ca5b10c8b11a58332ed94e3d3e0b501127aa0 (patch) | |
tree | add46a91706c4fdbea47b993c5fb772012c4963e /sys/arch/pmax | |
parent | 26be951ac2e0a61bc9a03e91e8b69ebb375d3ee9 (diff) |
from netbsd:
Add support for ptrace PT_GETREGS and PT_SETREGS for NetBSD/pmax:
* define PT_GETREGS and PT_SETREGS in pmax/include/ptrace.h
* Flesh out the stubs in pmax/pmax/process_machdep.c to handle
those requests.
* Now that "struct reg" is actually used, remove the bogus
#ifdef LANGUAGE_C around its definition, and redo pmax/include/reg.h
so that the definitions needed by locore.S are in a separate file,
pmax/include/regnum.h.
* update locore.S to match.
Diffstat (limited to 'sys/arch/pmax')
-rw-r--r-- | sys/arch/pmax/include/ptrace.h | 14 | ||||
-rw-r--r-- | sys/arch/pmax/include/reg.h | 97 | ||||
-rw-r--r-- | sys/arch/pmax/include/regnum.h | 145 | ||||
-rw-r--r-- | sys/arch/pmax/pmax/locore.S | 4 | ||||
-rw-r--r-- | sys/arch/pmax/pmax/process_machdep.c | 8 | ||||
-rw-r--r-- | sys/arch/pmax/tc/if_le.c | 3 |
6 files changed, 174 insertions, 97 deletions
diff --git a/sys/arch/pmax/include/ptrace.h b/sys/arch/pmax/include/ptrace.h index fbde035381d..f3ce907933e 100644 --- a/sys/arch/pmax/include/ptrace.h +++ b/sys/arch/pmax/include/ptrace.h @@ -1,4 +1,4 @@ -/* $NetBSD: ptrace.h,v 1.4 1994/10/26 21:09:56 cgd Exp $ */ +/* $NetBSD: ptrace.h,v 1.6 1995/12/21 09:28:36 jonathan Exp $ */ /* * Copyright (c) 1992, 1993 @@ -36,7 +36,15 @@ */ /* - * Machine dependent trace commands. + * Mips-dependent ptrace definitions. * - * None for the pmax at this time. */ + +/*#define PT_STEP (PT_FIRSTMACH + 0)*/ +#define PT_GETREGS (PT_FIRSTMACH + 1) +#define PT_SETREGS (PT_FIRSTMACH + 2) + +#ifdef notyet +#define PT_GETFPREGS (PT_FIRSTMACH + 3) +#define PT_SETFPREGS (PT_FIRSTMACH + 4) +#endif diff --git a/sys/arch/pmax/include/reg.h b/sys/arch/pmax/include/reg.h index 791233b7cf7..f91820dc359 100644 --- a/sys/arch/pmax/include/reg.h +++ b/sys/arch/pmax/include/reg.h @@ -1,4 +1,4 @@ -/* $NetBSD: reg.h,v 1.5 1995/01/18 06:40:12 mellon Exp $ */ +/* $NetBSD: reg.h,v 1.6 1995/12/20 02:00:27 jonathan Exp $ */ /* * Copyright (c) 1988 University of Utah. @@ -42,104 +42,21 @@ * @(#)reg.h 8.2 (Berkeley) 1/11/94 */ +#ifndef _MACHINE_REG_H_ +#define _MACHINE_REG_H_ /* * Location of the users' stored * registers relative to ZERO. * Usage is p->p_regs[XX]. + * + * must be visible to assembly code. */ -#define ZERO 0 -#define AST 1 -#define V0 2 -#define V1 3 -#define A0 4 -#define A1 5 -#define A2 6 -#define A3 7 -#define T0 8 -#define T1 9 -#define T2 10 -#define T3 11 -#define T4 12 -#define T5 13 -#define T6 14 -#define T7 15 -#define S0 16 -#define S1 17 -#define S2 18 -#define S3 19 -#define S4 20 -#define S5 21 -#define S6 22 -#define S7 23 -#define T8 24 -#define T9 25 -#define K0 26 -#define K1 27 -#define GP 28 -#define SP 29 -#define S8 30 -#define RA 31 -#define SR 32 -#define PS SR /* alias for SR */ -#define MULLO 33 -#define MULHI 34 -#define BADVADDR 35 -#define CAUSE 36 -#define PC 37 - -#define FPBASE 38 -#define F0 (FPBASE+0) -#define F1 (FPBASE+1) -#define F2 (FPBASE+2) -#define F3 (FPBASE+3) -#define F4 (FPBASE+4) -#define F5 (FPBASE+5) -#define F6 (FPBASE+6) -#define F7 (FPBASE+7) -#define F8 (FPBASE+8) -#define F9 (FPBASE+9) -#define F10 (FPBASE+10) -#define F11 (FPBASE+11) -#define F12 (FPBASE+12) -#define F13 (FPBASE+13) -#define F14 (FPBASE+14) -#define F15 (FPBASE+15) -#define F16 (FPBASE+16) -#define F17 (FPBASE+17) -#define F18 (FPBASE+18) -#define F19 (FPBASE+19) -#define F20 (FPBASE+20) -#define F21 (FPBASE+21) -#define F22 (FPBASE+22) -#define F23 (FPBASE+23) -#define F24 (FPBASE+24) -#define F25 (FPBASE+25) -#define F26 (FPBASE+26) -#define F27 (FPBASE+27) -#define F28 (FPBASE+28) -#define F29 (FPBASE+29) -#define F30 (FPBASE+30) -#define F31 (FPBASE+31) -#define FSR (FPBASE+32) - -#ifdef IPCREG -#define NIPCREG (FSR + 1) -int ipcreg[NIPCREG] = { - ZERO, AST, V0, V1, A0, A1, A2, A3, T0, T1, T2, T3, T4, T5, T6, T7, - S0, S1, S2, S3, S4, S5, S6, S7, T8, T9, K0, K1, GP, SP, S8, RA, - SR, MULLO, MULHI, BADVADDR, CAUSE, PC, - F0, F1, F2, F3, F4, F5, F6, F7, - F8, F9, F10, F11, F12, F13, F14, F15, - F16, F17, F18, F19, F20, F21, F22, F23, - F24, F25, F26, F27, F28, F29, F30, F31, FSR, -}; -#endif +#include <machine/regnum.h> -#ifdef LANGUAGE_C /* * Register set accessible via /proc/$pid/reg */ struct reg { int r_regs[71]; /* numbered as above */ }; -#endif /* LANGUAGE_C */ +#endif /*_MACHINE_REG_H_*/ diff --git a/sys/arch/pmax/include/regnum.h b/sys/arch/pmax/include/regnum.h new file mode 100644 index 00000000000..fe92e582eeb --- /dev/null +++ b/sys/arch/pmax/include/regnum.h @@ -0,0 +1,145 @@ +/* $NetBSD: regnum.h,v 1.1 1995/12/20 02:00:28 jonathan Exp $ */ + +/* + * Copyright (c) 1988 University of Utah. + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * the Systems Programming Group of the University of Utah Computer + * Science Department and Ralph Campbell. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * from: Utah Hdr: reg.h 1.1 90/07/09 + * + * @(#)reg.h 8.2 (Berkeley) 1/11/94 + */ + +/* + * Location of the users' stored + * registers relative to ZERO. + * Usage is p->p_regs[XX]. + */ +#define ZERO 0 +#define AST 1 +#define V0 2 +#define V1 3 +#define A0 4 +#define A1 5 +#define A2 6 +#define A3 7 +#define T0 8 +#define T1 9 +#define T2 10 +#define T3 11 +#define T4 12 +#define T5 13 +#define T6 14 +#define T7 15 +#define S0 16 +#define S1 17 +#define S2 18 +#define S3 19 +#define S4 20 +#define S5 21 +#define S6 22 +#define S7 23 +#define T8 24 +#define T9 25 +#define K0 26 +#define K1 27 +#define GP 28 +#define SP 29 +#define S8 30 +#define RA 31 +#define SR 32 +#define PS SR /* alias for SR */ +#define MULLO 33 +#define MULHI 34 +#define BADVADDR 35 +#define CAUSE 36 +#define PC 37 + +#define FPBASE 38 +#define F0 (FPBASE+0) +#define F1 (FPBASE+1) +#define F2 (FPBASE+2) +#define F3 (FPBASE+3) +#define F4 (FPBASE+4) +#define F5 (FPBASE+5) +#define F6 (FPBASE+6) +#define F7 (FPBASE+7) +#define F8 (FPBASE+8) +#define F9 (FPBASE+9) +#define F10 (FPBASE+10) +#define F11 (FPBASE+11) +#define F12 (FPBASE+12) +#define F13 (FPBASE+13) +#define F14 (FPBASE+14) +#define F15 (FPBASE+15) +#define F16 (FPBASE+16) +#define F17 (FPBASE+17) +#define F18 (FPBASE+18) +#define F19 (FPBASE+19) +#define F20 (FPBASE+20) +#define F21 (FPBASE+21) +#define F22 (FPBASE+22) +#define F23 (FPBASE+23) +#define F24 (FPBASE+24) +#define F25 (FPBASE+25) +#define F26 (FPBASE+26) +#define F27 (FPBASE+27) +#define F28 (FPBASE+28) +#define F29 (FPBASE+29) +#define F30 (FPBASE+30) +#define F31 (FPBASE+31) +#define FSR (FPBASE+32) + +#ifdef IPCREG +#define NIPCREG (FSR + 1) +int ipcreg[NIPCREG] = { + ZERO, AST, V0, V1, A0, A1, A2, A3, T0, T1, T2, T3, T4, T5, T6, T7, + S0, S1, S2, S3, S4, S5, S6, S7, T8, T9, K0, K1, GP, SP, S8, RA, + SR, MULLO, MULHI, BADVADDR, CAUSE, PC, + F0, F1, F2, F3, F4, F5, F6, F7, + F8, F9, F10, F11, F12, F13, F14, F15, + F16, F17, F18, F19, F20, F21, F22, F23, + F24, F25, F26, F27, F28, F29, F30, F31, FSR, +}; +#endif + +#ifdef LANGUAGE_C +/* + * Register set accessible via /proc/$pid/reg + */ +struct reg { + int r_regs[71]; /* numbered as above */ +}; +#endif /* LANGUAGE_C */ diff --git a/sys/arch/pmax/pmax/locore.S b/sys/arch/pmax/pmax/locore.S index 5f2da5823d8..fad99ae3b21 100644 --- a/sys/arch/pmax/pmax/locore.S +++ b/sys/arch/pmax/pmax/locore.S @@ -1,4 +1,4 @@ -/* $NetBSD: locore.S,v 1.16 1995/09/28 20:02:50 jonathan Exp $ */ +/* $NetBSD: locore.S,v 1.17 1995/12/20 02:00:32 jonathan Exp $ */ /* * Copyright (c) 1992, 1993 @@ -63,7 +63,7 @@ #include <machine/param.h> #include <machine/psl.h> -#include <machine/reg.h> +#include <machine/regnum.h> #include <machine/machAsmDefs.h> #include <machine/pte.h> diff --git a/sys/arch/pmax/pmax/process_machdep.c b/sys/arch/pmax/pmax/process_machdep.c index 45f60cd91be..07e7334af0b 100644 --- a/sys/arch/pmax/pmax/process_machdep.c +++ b/sys/arch/pmax/pmax/process_machdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: process_machdep.c,v 1.3 1994/10/26 21:10:40 cgd Exp $ */ +/* $NetBSD: process_machdep.c,v 1.4 1995/12/20 02:00:34 jonathan Exp $ */ /* * Copyright (c) 1994 Adam Glass @@ -72,13 +72,16 @@ #include <sys/vnode.h> #include <sys/ptrace.h> #include <machine/psl.h> + #include <machine/reg.h> + int process_read_regs(p, regs) struct proc *p; struct reg *regs; { + bcopy(p->p_md.md_regs, (caddr_t)regs, sizeof(struct reg)); return (0); } @@ -87,6 +90,9 @@ process_write_regs(p, regs) struct proc *p; struct reg *regs; { + bcopy((caddr_t)regs, p->p_md.md_regs, sizeof(struct reg)); + /* FIXME: is it safe to let users set system coprocessor regs? */ + /*p->p_md.md_tf->tf_psr = psr | (regs->r_psr & PSR_ICC);*/ return (0); } diff --git a/sys/arch/pmax/tc/if_le.c b/sys/arch/pmax/tc/if_le.c index fdb7536506d..c0fbf21090c 100644 --- a/sys/arch/pmax/tc/if_le.c +++ b/sys/arch/pmax/tc/if_le.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_le.c,v 1.4 1995/12/17 04:46:00 jonathan Exp $ */ +/* $NetBSD: if_le.c,v 1.5 1995/12/22 12:52:09 jonathan Exp $ */ /*- * Copyright (c) 1995 Charles M. Hannum. All rights reserved. @@ -222,6 +222,7 @@ leattach(parent, self, aux) dma_mask = (dma_mask & ~(word_t)0x1f) | (((word_t)le_iomem >> 29) & 0x1f); #endif /*alpha*/ + *ldp = dma_mask; *(volatile u_int *)ASIC_REG_CSR(asic_base) |= ASIC_CSR_DMAEN_LANCE; wbflush(); |