diff --git a/sys/mips/include/db_machdep.h b/sys/mips/include/db_machdep.h index a4959553d9a4..e6e6b50ce169 100644 --- a/sys/mips/include/db_machdep.h +++ b/sys/mips/include/db_machdep.h @@ -92,7 +92,6 @@ db_addr_t next_instr_address(db_addr_t, boolean_t); int db_inst_type(int); db_addr_t branch_taken(int inst, db_addr_t pc); -void stacktrace_subr(register_t pc, register_t sp, register_t ra, int (*)(const char *, ...)); int32_t kdbpeek(int *); int64_t kdbpeekd(int *); diff --git a/sys/mips/mips/db_trace.c b/sys/mips/mips/db_trace.c index 9a3b7308b014..676fc7fe6f51 100644 --- a/sys/mips/mips/db_trace.c +++ b/sys/mips/mips/db_trace.c @@ -130,9 +130,8 @@ fn_name(uintptr_t addr) return (buf); } -void -stacktrace_subr(register_t pc, register_t sp, register_t ra, - int (*printfn) (const char *,...)) +static void +stacktrace_subr(register_t pc, register_t sp, register_t ra) { InstFmt i; /* @@ -163,14 +162,14 @@ loop: subr = 0; trapframe = false; if (frames++ > 100) { - (*printfn) ("\nstackframe count exceeded\n"); + db_printf("\nstackframe count exceeded\n"); /* return breaks stackframe-size heuristics with gcc -O2 */ goto finish; /* XXX */ } /* check for bad SP: could foul up next frame */ /*XXX MIPS64 bad: this hard-coded SP is lame */ if (!MIPS_IS_VALID_KERNELADDR(sp)) { - (*printfn) ("SP 0x%jx: not in kernel\n", sp); + db_printf("SP 0x%jx: not in kernel\n", sp); ra = 0; subr = 0; goto done; @@ -215,7 +214,7 @@ loop: /* check for bad PC */ /*XXX MIPS64 bad: These hard coded constants are lame */ if (!MIPS_IS_VALID_KERNELADDR(pc)) { - (*printfn) ("PC 0x%jx: not in kernel\n", pc); + db_printf("PC 0x%jx: not in kernel\n", pc); ra = 0; goto done; } @@ -389,17 +388,17 @@ loop: } done: - (*printfn) ("%s+%x (", fn_name(subr), pc - subr); + db_printf("%s+%jx (", fn_name(subr), (uintmax_t)(pc - subr)); for (j = 0; j < 4; j ++) { if (j > 0) - (*printfn)(","); + db_printf(","); if (valid_args[j]) - (*printfn)("%jx", (uintmax_t)(u_register_t)args[j]); + db_printf("%jx", (uintmax_t)(u_register_t)args[j]); else - (*printfn)("?"); + db_printf("?"); } - (*printfn) (") ra %jx sp %jx sz %d\n", + db_printf(") ra %jx sp %jx sz %d\n", (uintmax_t)(u_register_t) ra, (uintmax_t)(u_register_t) sp, stksize); @@ -420,12 +419,12 @@ done: badvaddr = kdbpeek((int *)TF_REG(sp, BADVADDR)); #endif #undef TF_REG - (*printfn) ("--- exception, cause %jx badvaddr %jx ---\n", + db_printf("--- exception, cause %jx badvaddr %jx ---\n", (uintmax_t)cause, (uintmax_t)badvaddr); goto loop; } else if (ra) { if (pc == ra && stksize == 0) - (*printfn) ("stacktrace: loop!\n"); + db_printf("stacktrace: loop!\n"); else { pc = ra; sp += stksize; @@ -435,9 +434,9 @@ done: } else { finish: if (curproc) - (*printfn) ("pid %d\n", curproc->p_pid); + db_printf("pid %d\n", curproc->p_pid); else - (*printfn) ("curproc NULL\n"); + db_printf("curproc NULL\n"); } } @@ -479,7 +478,7 @@ db_trace_self(void) "move $31, %1\n" /* restore ra */ : "=r" (pc) : "r" (ra)); - stacktrace_subr(pc, sp, ra, db_printf); + stacktrace_subr(pc, sp, ra); return; } @@ -493,7 +492,7 @@ db_trace_thread(struct thread *thr, int count) sp = (register_t)ctx->pcb_context[PCB_REG_SP]; pc = (register_t)ctx->pcb_context[PCB_REG_PC]; ra = (register_t)ctx->pcb_context[PCB_REG_RA]; - stacktrace_subr(pc, sp, ra, db_printf); + stacktrace_subr(pc, sp, ra); return (0); } diff --git a/sys/mips/mips/trap.c b/sys/mips/mips/trap.c index 33874a8d6c0c..1475d7b659d1 100644 --- a/sys/mips/mips/trap.c +++ b/sys/mips/mips/trap.c @@ -278,11 +278,6 @@ char *trap_type[] = { struct trapdebug trapdebug[TRAPSIZE], *trp = trapdebug; #endif -#if defined(DDB) || defined(DEBUG) -void stacktrace(struct trapframe *); -void logstacktrace(struct trapframe *); -#endif - #define KERNLAND(x) ((vm_offset_t)(x) >= VM_MIN_KERNEL_ADDRESS && (vm_offset_t)(x) < VM_MAX_KERNEL_ADDRESS) #define DELAYBRANCH(x) ((int)(x) < 0) @@ -1082,7 +1077,6 @@ dofault: err: #if !defined(SMP) && defined(DEBUG) - stacktrace(!usermode ? trapframe : td->td_frame); trapDump("trap"); #endif #ifdef SMP @@ -1302,18 +1296,6 @@ MipsEmulateBranch(struct trapframe *framePtr, uintptr_t instPC, int fpcCSR, return (retAddr); } - -#if defined(DDB) || defined(DEBUG) -/* - * Print a stack backtrace. - */ -void -stacktrace(struct trapframe *regs) -{ - stacktrace_subr(regs->pc, regs->sp, regs->ra, printf); -} -#endif - static void log_frame_dump(struct trapframe *frame) {