summaryrefslogtreecommitdiff
path: root/sys/arch/pmax
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>1995-12-26 18:07:01 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>1995-12-26 18:07:01 +0000
commit831ca5b10c8b11a58332ed94e3d3e0b501127aa0 (patch)
treeadd46a91706c4fdbea47b993c5fb772012c4963e /sys/arch/pmax
parent26be951ac2e0a61bc9a03e91e8b69ebb375d3ee9 (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.h14
-rw-r--r--sys/arch/pmax/include/reg.h97
-rw-r--r--sys/arch/pmax/include/regnum.h145
-rw-r--r--sys/arch/pmax/pmax/locore.S4
-rw-r--r--sys/arch/pmax/pmax/process_machdep.c8
-rw-r--r--sys/arch/pmax/tc/if_le.c3
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();