diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2003-05-30 20:50:32 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2003-05-30 20:50:32 +0000 |
commit | 681285be5216bc32952bd85679db5c6d77202e72 (patch) | |
tree | ca19cac164cd943c41a30f8776b3ee519cfa1645 /usr.bin/pmdb | |
parent | 0c82cdbbbd19eccf869673227cffa7d2f773c1b3 (diff) |
m88k pmdb support bits; only compile-tested at the moment.
Diffstat (limited to 'usr.bin/pmdb')
-rw-r--r-- | usr.bin/pmdb/arch/m88k/Makefile.inc | 3 | ||||
-rw-r--r-- | usr.bin/pmdb/arch/m88k/m88k.c | 97 | ||||
-rw-r--r-- | usr.bin/pmdb/arch/m88k/pmdb_machdep.h | 31 |
3 files changed, 131 insertions, 0 deletions
diff --git a/usr.bin/pmdb/arch/m88k/Makefile.inc b/usr.bin/pmdb/arch/m88k/Makefile.inc new file mode 100644 index 00000000000..09fad97f3b0 --- /dev/null +++ b/usr.bin/pmdb/arch/m88k/Makefile.inc @@ -0,0 +1,3 @@ +# $OpenBSD: Makefile.inc,v 1.1 2003/05/30 20:50:31 miod Exp $ + +SRCS+= m88k.c diff --git a/usr.bin/pmdb/arch/m88k/m88k.c b/usr.bin/pmdb/arch/m88k/m88k.c new file mode 100644 index 00000000000..3e5c7727024 --- /dev/null +++ b/usr.bin/pmdb/arch/m88k/m88k.c @@ -0,0 +1,97 @@ +/* $OpenBSD: m88k.c,v 1.1 2003/05/30 20:50:31 miod Exp $ */ +/* + * Copyright (c) 2003, Miodrag Vallat. + * All rights reserved. + * + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + */ + +#include <sys/param.h> +#include <sys/ptrace.h> +#include <machine/reg.h> +#include <machine/pcb.h> /* XXX temp until frame.h is standalone */ +#include <machine/frame.h> +#include "pmdb.h" + +static const char *md_reg_names[] = { + "%r0", "%r1", "%r2", "%r3", "%r4", "%r5", "%r6", "%r7", + "%r8", "%r9", "%r10", "%r11", "%r12", "%r13", "%r14", "%r15", + "%r16", "%r17", "%r18", "%r19", "%r20", "%r21", "%r22", "%r23", + "%r24", "%r25", "%r26", "%r27", "%r28", "%r29", "%r30", "%sp", + "%epsr", "%fpsr", "%fpcr", + "%sxip", "%snip", "%sfip", + "%ssbr", + "%dmt0", "%dmd0", "%dma0", + "%dmt1", "%dmd1", "%dma1", + "%dmt2", "%dmd2", "%dma2", + "%fpecr", "%fphs1", "%fpls1", "%fphs2", "%fpls2", + "%fppt", "%fprh", "%fprl", "%fpit" +}; + +struct md_def md_def = { md_reg_names, 57, 35 }; + +void +md_def_init(void) +{ + /* nothing to do */ +} + +int +md_getframe(struct pstate *ps, int framenum, struct md_frame *fram) +{ + struct frame fr; + struct reg r; + int count; + + if (process_getregs(ps, &r) != 0) + return (-1); + + fr.F_t.tf_sp = r.tf_sp; + fr.F_t.sxip = r.sxip; + + for (count = 0; count < framenum; count++) { + if (process_read(ps, fr.F_t.tf_sp, &fr, sizeof(fr)) < 0) + return (-1); + + if (fr.F_t.sxip < 0x1000) + return (-1); + } + + fram->pc = fr.F_t.sxip; + fram->fp = fr.F_t.tf_sp; + + return (0); +} + +int +md_getregs(struct pstate *ps, reg *regs) +{ + struct reg r; + + if (process_getregs(ps, &r) != 0) + return (-1); + + memcpy(regs, &r, sizeof(r)); + + return (0); +} diff --git a/usr.bin/pmdb/arch/m88k/pmdb_machdep.h b/usr.bin/pmdb/arch/m88k/pmdb_machdep.h new file mode 100644 index 00000000000..2a0afc25f7a --- /dev/null +++ b/usr.bin/pmdb/arch/m88k/pmdb_machdep.h @@ -0,0 +1,31 @@ +/* $OpenBSD: pmdb_machdep.h,v 1.1 2003/05/30 20:50:31 miod Exp $ */ +/* + * Copyright (c) 2003, Miodrag Vallat. + * All rights reserved. + * + * 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. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. + * + */ + +#define BREAKPOINT { 0xf0, 0x00, 0xd0, 0x82 } +#define BREAKPOINT_LEN 4 +#define BREAKPOINT_DECR_PC 0 |