Index: sys/arch/arm/arm/db_trace.c =================================================================== RCS file: /cvsroot/src/sys/arch/arm/arm/db_trace.c,v retrieving revision 1.27 diff -u -p -u -r1.27 db_trace.c --- sys/arch/arm/arm/db_trace.c 31 Dec 2012 08:57:27 -0000 1.27 +++ sys/arch/arm/arm/db_trace.c 18 Jan 2013 07:14:36 -0000 @@ -91,6 +91,7 @@ db_stack_trace_print(db_expr_t addr, boo char c; bool kernel_only = true; bool trace_thread = false; + bool trace_regs = false; bool lwpaddr = false; db_addr_t scp, pc; int scp_offset; @@ -104,6 +105,8 @@ db_stack_trace_print(db_expr_t addr, boo kernel_only = false; if (c == 't') trace_thread = true; + if (c == 'r') + trace_regs = true; } if (!have_addr) @@ -181,19 +184,22 @@ db_stack_trace_print(db_expr_t addr, boo (char *)frameb); frame = frameb + 3; #endif - db_printsym(pc, DB_STGY_PROC, pr); - (*pr)("\n\t"); + if (trace_regs) { + (*pr)("\n\t"); #ifdef __PROG26 - (*pr)("pc =0x%08x rlv=0x%08x (", pc, frame[FR_RLV] & R15_PC); - db_printsym(frame[FR_RLV] & R15_PC, DB_STGY_PROC, pr); - (*pr)(")\n"); -#else - (*pr)("pc =0x%08x rlv=0x%08x (", pc, frame[FR_RLV]); - db_printsym(frame[FR_RLV], DB_STGY_PROC, pr); - (*pr)(")\n"); + (*pr)("pc =0x%08x rlv=0x%08x (", pc, + frame[FR_RLV] & R15_PC); + db_printsym(frame[FR_RLV] & R15_PC, DB_STGY_PROC, pr); + (*pr)(")\n"); +#else + (*pr)("pc =0x%08x rlv=0x%08x (", pc, frame[FR_RLV]); + db_printsym(frame[FR_RLV], DB_STGY_PROC, pr); + (*pr)(")\n"); #endif - (*pr)("\trsp=0x%08x rfp=0x%08x", frame[FR_RSP], frame[FR_RFP]); + (*pr)("\trsp=0x%08x rfp=0x%08x", frame[FR_RSP], + frame[FR_RFP]); + } #ifndef _KERNEL db_read_bytes((db_addr_t)((uint32_t *)scp + scp_offset), @@ -205,7 +211,8 @@ db_stack_trace_print(db_expr_t addr, boo savecode = 0; } #endif - if ((savecode & 0x0e100000) == 0x08000000) { + if (trace_regs && + (savecode & 0x0e100000) == 0x08000000) { /* Looks like an STM */ rp = frame - 4; sep = "\n\t";