summaryrefslogtreecommitdiff
path: root/sys/arch/alpha/include/db_machdep.h
diff options
context:
space:
mode:
authorNiklas Hallqvist <niklas@cvs.openbsd.org>1997-07-19 20:50:51 +0000
committerNiklas Hallqvist <niklas@cvs.openbsd.org>1997-07-19 20:50:51 +0000
commit3690a912023cb6f4ae1fbc67061d2d135963f3f9 (patch)
tree9366a77ea39a75a0d6aee2512b76c4b5921ee1bd /sys/arch/alpha/include/db_machdep.h
parent5cb42bec44cf087eb4e81c9af8ea7224afd6fbbe (diff)
Rewritten
Diffstat (limited to 'sys/arch/alpha/include/db_machdep.h')
-rw-r--r--sys/arch/alpha/include/db_machdep.h120
1 files changed, 58 insertions, 62 deletions
diff --git a/sys/arch/alpha/include/db_machdep.h b/sys/arch/alpha/include/db_machdep.h
index fd7ba232ba6..59f9d27aa97 100644
--- a/sys/arch/alpha/include/db_machdep.h
+++ b/sys/arch/alpha/include/db_machdep.h
@@ -1,86 +1,82 @@
-/* $OpenBSD: db_machdep.h,v 1.5 1997/07/06 16:20:23 niklas Exp $ */
-/* $NetBSD: db_machdep.h,v 1.2 1996/07/11 05:31:31 cgd Exp $ */
+/* $OpenBSD: db_machdep.h,v 1.6 1997/07/19 20:50:50 niklas Exp $ */
/*
- * Copyright (c) 1995 Carnegie-Mellon University.
- * All rights reserved.
+ * Copyright (c) 1997 Niklas Hallqvist. All rights reserverd.
*
- * Author: Chris G. Demetriou
+ * 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 Niklas Hallqvist.
+ * 4. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
*
- * Permission to use, copy, modify and distribute this software and
- * its documentation is hereby granted, provided that both the copyright
- * notice and this permission notice appear in all copies of the
- * software, derivative works or modified versions, and any portions
- * thereof, and that both notices appear in supporting documentation.
- *
- * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
- * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
- * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
- *
- * Carnegie Mellon requests users of this software to return to
- *
- * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
- * School of Computer Science
- * Carnegie Mellon University
- * Pittsburgh PA 15213-3890
- *
- * any improvements or extensions that they make and grant Carnegie the
- * rights to redistribute these changes.
+ * 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.
*/
#ifndef _ALPHA_DB_MACHDEP_H_
#define _ALPHA_DB_MACHDEP_H_
-/*
- * Machine-dependent defines for new kernel debugger.
- */
-
-#include <sys/param.h>
-#include <vm/vm.h>
-#include <machine/frame.h>
-
-typedef vm_offset_t db_addr_t; /* address - unsigned */
-typedef long db_expr_t; /* expression - signed */
+struct opcode {
+ enum opc_fmt { OPC_PAL, OPC_RES, OPC_MEM, OPC_OP, OPC_BR } opc_fmt;
+ char *opc_name;
+ int opc_print;
+};
+extern struct opcode opcode[];
+/* types the generic ddb module needs */
+typedef vm_offset_t db_addr_t;
+typedef long db_expr_t;
typedef struct trapframe db_regs_t;
-db_regs_t ddb_regs; /* register state */
+
+db_regs_t ddb_regs;
#define DDB_REGS (&ddb_regs)
#define PC_REGS(regs) ((db_addr_t)(regs)->tf_regs[FRAME_PC])
-#define BKPT_INST 0x00000080 /* breakpoint instruction */
-#define BKPT_SIZE (4) /* size of breakpoint inst */
-#define BKPT_SET(inst) (BKPT_INST)
+/* Breakpoint related definitions */
+#define BKPT_INST 0x00000080 /* call_pal bpt */
+#define BKPT_SIZE sizeof(int)
+#define BKPT_SET(inst) BKPT_INST
-#define FIXUP_PC_AFTER_BREAK(regs) ((regs)->tf_regs[FRAME_PC] -= BKPT_SIZE)
-
-#define IS_BREAKPOINT_TRAP(type, code) 0
-#define IS_WATCHPOINT_TRAP(type, code) 0
-
-#define SOFTWARE_SSTEP
-
-/* Hack to skip GCC "unused" warnings. */
-#ifdef __GNUC__
-#define inst_trap_return(ins) ({(ins); 0;})
-#define inst_return(ins) ({(ins); 0;})
-#define inst_call(ins) ({(ins); 0;})
-#define inst_branch(ins) ({(ins); 0;})
-#define inst_load(ins) ({(ins); 0;})
-#define inst_store(ins) ({(ins); 0;})
+#define IS_BREAKPOINT_TRAP(type, code) \
+ ((type) == ALPHA_KENTRY_IF && (code) == ALPHA_IF_CODE_BPT)
+#ifdef notyet
+#define IS_WATCHPOINT_TRAP(type, code) ((type) == ALPHA_KENTRY_MM)
#else
-#define inst_trap_return(ins) 0
-#define inst_return(ins) 0
-#define inst_call(ins) 0
-#define inst_branch(ins) 0
-#define inst_load(ins) 0
-#define inst_store(ins) 0
+#define IS_WATCHPOINT_TRAP(type, code) 0
#endif
-#define next_instr_address(pc, bd) (pc + 4)
+#define FIXUP_PC_AFTER_BREAK(regs) ((regs)->tf_regs[FRAME_PC] -= sizeof(int))
-/* XXX temporary hack until we implement singlestepping */
-#define branch_taken(a, b, c, d) 0
+#define SOFTWARE_SSTEP
+/* Hack to skip GCC "unused" warnings. */
+#define inst_trap_return(ins) ((ins) & 0) /* XXX */
+#define inst_return(ins) ((ins) == 0x6bfa8001)
+
+int inst_call __P((u_int));
+int inst_branch __P((u_int));
+int inst_load __P((u_int));
+int inst_store __P((u_int));
+db_addr_t branch_taken __P((u_int, db_addr_t,
+ register_t (*) __P((db_regs_t *, int)), db_regs_t *));
+db_addr_t next_instr_address __P((db_addr_t, int));
int kdb_trap __P((int, int, db_regs_t *));
#endif /* _ALPHA_DB_MACHDEP_H_ */