From f610b17c8dd279232337eb576658970e589f7a1d Mon Sep 17 00:00:00 2001 From: dfr Date: Tue, 10 Oct 2000 14:57:10 +0000 Subject: * Add rudimentary DDB support (no kgdb, no backtrace, no single step). * Track recent changes to SWI code. * Allocate RIDs for pmaps (untested). * Implement assembler version of cpu_switch - its cleaner that way. --- sys/ia64/include/db_machdep.h | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'sys/ia64/include/db_machdep.h') diff --git a/sys/ia64/include/db_machdep.h b/sys/ia64/include/db_machdep.h index 1517a54..b807b37 100644 --- a/sys/ia64/include/db_machdep.h +++ b/sys/ia64/include/db_machdep.h @@ -43,24 +43,35 @@ typedef vm_offset_t db_addr_t; /* address - unsigned */ typedef long db_expr_t; /* expression - signed */ - typedef struct trapframe db_regs_t; db_regs_t ddb_regs; /* register state */ #define DDB_REGS (&ddb_regs) -#define PC_REGS(regs) ((db_addr_t)(regs)->tf_regs[FRAME_PC]) +#define PC_REGS(regs) ((db_addr_t)(regs)->tf_cr_iip \ + + (((regs)->tf_cr_ipsr >> 41) & 3)) #define BKPT_INST 0x00000080 /* breakpoint instruction */ #define BKPT_SIZE (4) /* size of breakpoint inst */ #define BKPT_SET(inst) (BKPT_INST) -#define FIXUP_PC_AFTER_BREAK \ - (ddb_regs.tf_regs[FRAME_PC] -= BKPT_SIZE); +#define FIXUP_PC_AFTER_BREAK + +#define db_clear_single_step(regs) 0 +#define db_set_single_step(regs) 0 -#define IS_BREAKPOINT_TRAP(type, code) ((type) == ALPHA_KENTRY_IF && \ - (code) == ALPHA_IF_CODE_BPT) +#define IS_BREAKPOINT_TRAP(type, code) 0 #define IS_WATCHPOINT_TRAP(type, code) 0 +#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 inst_unconditional_flow_transfer(ins) 0 + +#define branch_taken(ins, pc, regs) pc + /* * Functions needed for software single-stepping. */ @@ -68,9 +79,8 @@ db_regs_t ddb_regs; /* register state */ /* No delay slots on Alpha. */ #define next_instr_address(v, b) ((db_addr_t) ((b) ? (v) : ((v) + 4))) -u_long db_register_value __P((db_regs_t *, int)); -int kdb_trap __P((unsigned long, unsigned long, unsigned long, - unsigned long, struct trapframe *)); +u_long db_register_value(db_regs_t *, int); +int kdb_trap(int vector, struct trapframe *regs); /* * Pretty arbitrary -- cgit v1.1