summaryrefslogtreecommitdiff
path: root/sys/arch/i386
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>1997-04-01 04:52:48 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>1997-04-01 04:52:48 +0000
commit578efbfa2de99f72e0c84130ddba49afb782a27e (patch)
treee8820b312f1a4d4f4d7c26f08d883c7e2603f798 /sys/arch/i386
parent905b4f13d1f353ceb071c91af223a162c645bd13 (diff)
debugger started.
only one entry for now: chek_regs (use DUMP_REGS macro instead) dumps registers. must be called by lcall or so (to push %cs)
Diffstat (limited to 'sys/arch/i386')
-rw-r--r--sys/arch/i386/stand/libsa/Makefile15
-rw-r--r--sys/arch/i386/stand/libsa/debug.c64
-rw-r--r--sys/arch/i386/stand/libsa/debug.h39
-rw-r--r--sys/arch/i386/stand/libsa/debug_aout.c43
-rw-r--r--sys/arch/i386/stand/libsa/debug_i386.S101
-rw-r--r--sys/arch/i386/stand/libsa/debug_md.h51
6 files changed, 307 insertions, 6 deletions
diff --git a/sys/arch/i386/stand/libsa/Makefile b/sys/arch/i386/stand/libsa/Makefile
index 23103a5ca61..87ff92e9159 100644
--- a/sys/arch/i386/stand/libsa/Makefile
+++ b/sys/arch/i386/stand/libsa/Makefile
@@ -1,19 +1,19 @@
-# $OpenBSD: Makefile,v 1.4 1997/03/31 23:06:25 mickey Exp $
+# $OpenBSD: Makefile,v 1.5 1997/04/01 04:52:44 mickey Exp $
LIB= sa
+S=${.CURDIR}/../../../..
+DIR_SA= $S/lib/libsa
+DIR_KERN=$S/lib/libkern
+
CFLAGS+=$(SACFLAGS) -D__INTERNAL_LIBSA_CREAD
CFLAGS+=-DHEAP_START=$(HEAP_START) -DHEAP_LIMIT=$(HEAP_LIMIT)
CFLAGS+=${DEBUGFLAGS} -I${.CURDIR} -I${.CURDIR}/..
-CFLAGS+=-I${.CURDIR}/../../../.. -I${.CURDIR}/../../../../lib/libsa
+CFLAGS+=-I$(S)/lib/libsa -I$(S)
AS+= -R
#AS+= -Wa,-a
-S=${.CURDIR}/../../../..
-DIR_SA= $S/lib/libsa
-DIR_KERN=$S/lib/libkern
-
# stand routines
SRCS= alloc.c exit.c exec.c getfile.c gets.c globals.c strcmp.c strlen.c \
strncmp.c memcmp.c memcpy.c memset.c printf.c strerror.c strncpy.c
@@ -34,6 +34,9 @@ SRCS+= bootp.c bootparam.c rarp.c
# boot filesystems
SRCS+= ufs.c nfs.c cd9660.c
+# debugger
+SRCS+= debug.c debug_aout.c debug_i386.S
+
# i386 stuff
SRCS+= asm.S bioscom.S biosdev.c biosdisk.S bioskbd.S biostime.S biosmem.S \
dev_i386.c gateA20.c memprobe.c real_prot.S unixsys.S exec_i386.S
diff --git a/sys/arch/i386/stand/libsa/debug.c b/sys/arch/i386/stand/libsa/debug.c
new file mode 100644
index 00000000000..9ecd8468190
--- /dev/null
+++ b/sys/arch/i386/stand/libsa/debug.c
@@ -0,0 +1,64 @@
+/* $OpenBSD: debug.c,v 1.1 1997/04/01 04:52:45 mickey Exp $ */
+
+/*
+ * Copyright (c) 1997 Michael Shalayeff
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Michael Shalayeff.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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 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.
+ *
+ */
+
+#include <stand.h>
+#include <debug.h>
+
+const char *reg_names[] = { REG_NAMES };
+const int nreg = NENTS(reg_names);
+struct reg reg;
+const u_int32_t *reg_values[] = { REG_VALUES(reg) };
+
+int
+debug_init()
+{
+ return 0;
+}
+
+void
+dump_regs()
+{
+ int i;
+
+ for (i = 0; i < nreg; putchar((++i % 4)?' ':'\n'))
+ printf ("%s=0x%x", reg_names[i], *reg_values[i]);
+ if (i % 4)
+ putchar('\n');
+}
+
+void
+dump_mem()
+{
+
+}
diff --git a/sys/arch/i386/stand/libsa/debug.h b/sys/arch/i386/stand/libsa/debug.h
new file mode 100644
index 00000000000..d14e17b4da3
--- /dev/null
+++ b/sys/arch/i386/stand/libsa/debug.h
@@ -0,0 +1,39 @@
+/* $OpenBSD: debug.h,v 1.1 1997/04/01 04:52:45 mickey Exp $ */
+
+/*
+ * Copyright (c) 1997 Michael Shalayeff
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Michael Shalayeff.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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 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.
+ *
+ */
+
+#include <debug_md.h>
+#include <machine/reg.h>
+
+extern const char *reg_names[];
+extern const size_t nregs;
diff --git a/sys/arch/i386/stand/libsa/debug_aout.c b/sys/arch/i386/stand/libsa/debug_aout.c
new file mode 100644
index 00000000000..b410b7fac55
--- /dev/null
+++ b/sys/arch/i386/stand/libsa/debug_aout.c
@@ -0,0 +1,43 @@
+/* $OpenBSD: debug_aout.c,v 1.1 1997/04/01 04:52:46 mickey Exp $ */
+
+/*
+ * Copyright (c) 1997 Michael Shalayeff
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Michael Shalayeff.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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 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.
+ *
+ */
+
+#include <stand.h>
+#include <debug.h>
+#include <sys/exec.h>
+
+int
+aout_init()
+{
+ return 0;
+}
diff --git a/sys/arch/i386/stand/libsa/debug_i386.S b/sys/arch/i386/stand/libsa/debug_i386.S
new file mode 100644
index 00000000000..a111e24fa84
--- /dev/null
+++ b/sys/arch/i386/stand/libsa/debug_i386.S
@@ -0,0 +1,101 @@
+/* $OpenBSD: debug_i386.S,v 1.1 1997/04/01 04:52:46 mickey Exp $ */
+
+/*
+ * Copyright (c) 1997 Michael Shalayeff
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Michael Shalayeff.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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 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.
+ *
+ */
+
+#include <machine/asm.h>
+#include <machine/psl.h>
+#define _LOCORE
+#include <machine/segments.h>
+#include <debug_md.h>
+#undef _LOCORE
+
+ .data
+#ifndef NO_IDTR
+ .align 3
+ .globl _Idtr_real
+_Idtr_real:
+ .word 1024
+ .long 0
+
+ .align 3
+ .globl _Idtr_prot
+idt:
+ .long 0, 0
+
+_Idtr_prot:
+ .word . - idt
+ .long idt
+#endif
+
+ .text
+
+ENTRY(check_regs)
+ pushal # 8 ones
+ pushl %ds
+ pushl %es
+ pushl %fs
+ pushl %gs
+ pushfl
+ movl $0x10, %eax
+ movl %ax, %ds
+ movl $_reg, %edi
+ cld
+ movl 0xc*4(%esp), %eax; stosl # %eax
+ movl 0xb*4(%esp), %eax; stosl # %ecx
+ movl 0xa*4(%esp), %eax; stosl # %edx
+ movl 0x9*4(%esp), %eax; stosl # %ebx
+ movl 0x8*4(%esp), %eax; stosl # %esp
+ movl 0x7*4(%esp), %eax; stosl # %ebp
+ movl 0x6*4(%esp), %eax; stosl # %esi
+ movl 0x5*4(%esp), %eax; stosl # %edi
+ movl 0xd*4(%esp), %eax; stosl # %eip
+ movl 0x0*4(%esp), %eax; stosl # %eflags
+ movl 0xe*4(%esp), %eax; stosl # %cs
+ movl %ss, %eax; stosl # %ss
+ movl 0x4*4(%esp), %eax; stosl # %ds
+ movl 0x3*4(%esp), %eax; stosl # %es
+ movl 0x2*4(%esp), %eax; stosl # %fs
+ movl 0x1*4(%esp), %eax; stosl # %gs
+
+ call _C_LABEL(dump_regs)
+
+ popfl
+ popl %gs
+ popl %fs
+ popl %es
+ popl %ds
+ popal
+ lret
+
+
+
diff --git a/sys/arch/i386/stand/libsa/debug_md.h b/sys/arch/i386/stand/libsa/debug_md.h
new file mode 100644
index 00000000000..3d2cc9283b7
--- /dev/null
+++ b/sys/arch/i386/stand/libsa/debug_md.h
@@ -0,0 +1,51 @@
+/* $OpenBSD: debug_md.h,v 1.1 1997/04/01 04:52:47 mickey Exp $ */
+
+/*
+ * Copyright (c) 1997 Michael Shalayeff
+ * 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.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed by Michael Shalayeff.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * 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 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.
+ *
+ */
+
+#define REG_NAMES \
+ "eax", "ecx", "edx", "ebx", "esp", "ebp", "esi", "edi", \
+ "eip", "eflags", "cs", "ss", "ds", "es", "fs", "gs"
+#define REG_VALUES(r) \
+ &(r).r_eax, &(r).r_ecx, &(r).r_edx, &(r).r_ebx, &(r).r_esp, \
+ &(r).r_ebp, &(r).r_esi, &(r).r_edi, &(r).r_eip, &(r).r_eflags, \
+ &(r).r_cs , &(r).r_ss, &(r).r_ds, &(r).r_es, &(r).r_fs, \
+ &(r).r_gs
+
+#ifdef _LOCORE
+ .globl _reg
+#define DUMP_REGS pushl %cs; call _check_regs
+#else
+#define DUMP_REGS __asm("pushl %cs; call _check_regs")
+extern struct reg reg;
+#endif
+