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