Annotation of sys/arch/sh/include/db_machdep.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: db_machdep.h,v 1.3 2006/11/02 22:16:22 mickey Exp $ */
! 2: /* $NetBSD: db_machdep.h,v 1.12 2006/05/10 06:24:03 skrll Exp $ */
! 3:
! 4: /*
! 5: * Mach Operating System
! 6: * Copyright (c) 1991,1990 Carnegie Mellon University
! 7: * All Rights Reserved.
! 8: *
! 9: * Permission to use, copy, modify and distribute this software and its
! 10: * documentation is hereby granted, provided that both the copyright
! 11: * notice and this permission notice appear in all copies of the
! 12: * software, derivative works or modified versions, and any portions
! 13: * thereof, and that both notices appear in supporting documentation.
! 14: *
! 15: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
! 16: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
! 17: * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
! 18: *
! 19: * Carnegie Mellon requests users of this software to return to
! 20: *
! 21: * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
! 22: * School of Computer Science
! 23: * Carnegie Mellon University
! 24: * Pittsburgh PA 15213-3890
! 25: *
! 26: * any improvements or extensions that they make and grant Carnegie Mellon
! 27: * the rights to redistribute these changes.
! 28: */
! 29:
! 30: #ifndef _SH_DB_MACHDEP_H_
! 31: #define _SH_DB_MACHDEP_H_
! 32:
! 33: /*
! 34: * Machine-dependent defines for the kernel debugger.
! 35: */
! 36:
! 37: #include <sys/param.h>
! 38: #include <uvm/uvm_extern.h>
! 39: #include <sh/trap.h>
! 40:
! 41: typedef vaddr_t db_addr_t; /* address - unsigned */
! 42: typedef long db_expr_t; /* expression - signed */
! 43:
! 44: typedef struct trapframe db_regs_t;
! 45: extern db_regs_t ddb_regs; /* register state */
! 46: #define DDB_REGS (&ddb_regs)
! 47:
! 48: #define PC_REGS(regs) ((db_addr_t)(regs)->tf_spc)
! 49: #define PC_ADVANCE(regs) ((regs)->tf_spc += BKPT_SIZE)
! 50:
! 51: #define BKPT_INST 0xc3c3 /* breakpoint instruction */
! 52: #define BKPT_SIZE 2 /* size of breakpoint inst */
! 53: #define BKPT_SET(inst) BKPT_INST
! 54:
! 55: #define FIXUP_PC_AFTER_BREAK(regs) ((regs)->tf_spc -= BKPT_SIZE)
! 56:
! 57: #define IS_BREAKPOINT_TRAP(type, code) ((type) == EXPEVT_TRAPA)
! 58: #define IS_WATCHPOINT_TRAP(type, code) (0) /* XXX (msaitoh) */
! 59:
! 60: #define inst_load(ins) 0
! 61: #define inst_store(ins) 0
! 62:
! 63: /* macro for checking if a thread has used floating-point */
! 64: #define db_thread_fp_used(thread) ((thread)->pcb->ims.ifps != 0)
! 65:
! 66: int kdb_trap(int, int, db_regs_t *);
! 67: void db_machine_init (void);
! 68: boolean_t inst_call(int);
! 69: boolean_t inst_return(int);
! 70: boolean_t inst_trap_return(int);
! 71:
! 72: /*
! 73: * We use ELF symbols in DDB.
! 74: *
! 75: */
! 76: #define DB_ELF_SYMBOLS
! 77: #define DB_ELFSIZE 32
! 78:
! 79: /*
! 80: * We have machine-dependent commands.
! 81: */
! 82: #define DB_MACHINE_COMMANDS
! 83:
! 84: #endif /* !_SH_DB_MACHDEP_H_ */
CVSweb