Home | History | Annotate | Line # | Download | only in include
db_machdep.h revision 1.1
      1 /* $NetBSD */
      2 
      3 #ifndef	_MIPS_DB_MACHDEP_H_
      4 #define	_MIPS_DB_MACHDEP_H_
      5 
      6 #include <vm/vm_param.h>		/* XXX  boolean_t */
      7 #include <mips/trap.h>			/* T_BREAK */
      8 #include <mips/reg.h>			/* register names */
      9 #include <mips/proc.h>			/* register state */
     10 
     11 
     12 typedef	vm_offset_t	db_addr_t;	/* address - unsigned */
     13 typedef	long		db_expr_t;	/* expression - signed */
     14 
     15 typedef struct frame db_regs_t;
     16 
     17 db_regs_t		ddb_regs;	/* register state */
     18 #define	DDB_REGS	(&ddb_regs)
     19 
     20 #define	PC_REGS(regs)	((db_addr_t)(regs)->f_regs[PC])
     21 
     22 #define BKPT_INST	0x0001000D	/* XXX endianness? */
     23 #define	BKPT_SIZE	(4)		/* size of breakpoint inst */
     24 #define	BKPT_SET(inst)	(BKPT_INST)
     25 
     26 #define	IS_BREAKPOINT_TRAP(type, code)	((type) == T_BREAK)
     27 #define IS_WATCHPOINT_TRAP(type, code)	(0)	/* XXX mips3 watchpoint */
     28 
     29 #define	inst_trap_return(ins)	((ins)&0)
     30 #define	inst_return(ins)	((ins)&0)
     31 #define inst_load(ins)		0
     32 #define inst_store(ins)		0
     33 
     34 /*
     35  * Interface to  disassembly (shared with mdb)
     36  */
     37 db_addr_t  db_disasm_insn __P((int insn, db_addr_t loc,  boolean_t altfmt));
     38 
     39 
     40 /*
     41  * Entrypoints to DDB for kernel, keyboard drivers, init hook
     42  */
     43 void 	kdb_kbd_trap __P((db_regs_t *));
     44 int 	kdb_trap __P((int type, db_regs_t *));
     45 void	db_machine_init __P((void));
     46 
     47 
     48 /*
     49  * We use ELF symbols in DDB.
     50  *
     51  */
     52 /* #define	DB_ELF_SYMBOLS */
     53 #define	DB_AOUT_SYMBOLS */
     54 
     55 /*
     56  * MIPS cpus have no hardware single-step.
     57  */
     58 #define SOFTWARE_SSTEP
     59 
     60 boolean_t inst_branch __P((int inst));
     61 boolean_t inst_call __P((int inst));
     62 boolean_t inst_unconditional_flow_transfer __P((int inst));
     63 db_addr_t branch_taken __P((int inst, db_addr_t pc, db_regs_t *regs));
     64 db_addr_t next_instr_address __P((db_addr_t pc, boolean_t bd));
     65 
     66 /*
     67  * We have  machine-dependent commands.
     68  */
     69 #define DB_MACHINE_COMMANDS
     70 
     71 #endif	/* _MIPS_DB_MACHDEP_H_ */
     72