In 2003(!) a pile of code was deleted from sparc64's locore.s:
----------------------------
revision 1.35
date: 2003/05/17 07:09:08; author: art; state: Exp; lines: +1 -957;
Get rid of lots of hairy ifdefs that we'll most likely never use.
TRAPTRACE, TRAPSTATS, FLTTRACE and SCHED_DEBUG.
mdw@ henric@ ok.
----------------------------
That was the code that actually put data into the trap_trace[] array,
rendering the remaining trap_trace* code useless. How about we delete
those bits?
This built and the box booted with the resulting kernel.
ok?
Philip Guenther
Index: sparc64/autoconf.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/sparc64/autoconf.c,v
retrieving revision 1.126
diff -u -p -r1.126 autoconf.c
--- sparc64/autoconf.c 8 Jun 2016 17:24:44 -0000 1.126
+++ sparc64/autoconf.c 17 Oct 2016 06:25:36 -0000
@@ -586,11 +586,6 @@ bootpath_build(void)
#else
printf("kernel has no debugger\n");
#endif
- } else if (*cp == 't') {
- /* turn on traptrace w/o breaking into kdb */
- extern int trap_trace_dis;
-
- trap_trace_dis = 0;
}
}
}
Index: sparc64/db_interface.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/sparc64/db_interface.c,v
retrieving revision 1.45
diff -u -p -r1.45 db_interface.c
--- sparc64/db_interface.c 8 Oct 2016 05:49:09 -0000 1.45
+++ sparc64/db_interface.c 17 Oct 2016 06:25:37 -0000
@@ -73,17 +73,6 @@ db_regs_t ddb_regs; /* register state */
extern void OF_enter(void);
-extern struct traptrace {
- unsigned short tl:3, /* Trap level */
- ns:4, /* PCB nsaved */
- tt:9; /* Trap type */
- unsigned short pid; /* PID */
- u_int tstate; /* tstate */
- u_int tsp; /* sp */
- u_int tpc; /* pc */
- u_int tfault; /* MMU tag access */
-} trap_trace[], trap_trace_end[];
-
static long nil;
static int
@@ -231,14 +220,12 @@ void db_pmap_kernel(db_expr_t, int, db_e
void db_pload_cmd(db_expr_t, int, db_expr_t, char *);
void db_pmap_cmd(db_expr_t, int, db_expr_t, char *);
void db_lock(db_expr_t, int, db_expr_t, char *);
-void db_traptrace(db_expr_t, int, db_expr_t, char *);
void db_dump_buf(db_expr_t, int, db_expr_t, char *);
void db_dump_espcmd(db_expr_t, int, db_expr_t, char *);
void db_watch(db_expr_t, int, db_expr_t, char *);
void db_xir(db_expr_t, int, db_expr_t, char *);
static void db_dump_pmap(struct pmap*);
-static void db_print_trace_entry(struct traptrace *, int);
#ifdef MULTIPROCESSOR
void db_cpuinfo_cmd(db_expr_t, int, db_expr_t, char *);
@@ -272,9 +259,6 @@ db_ktrap(type, tf)
struct trapstate *ts = &ddb_regs.ddb_ts[0];
extern int savetstate(struct trapstate *ts);
extern void restoretstate(int tl, struct trapstate *ts);
- extern int trap_trace_dis;
-
- trap_trace_dis++;
#if NTDA > 0
tda_full_blast();
@@ -336,7 +320,6 @@ db_ktrap(type, tf)
*(struct frame *)tf->tf_out[6] = ddb_regs.ddb_fr;
#endif
*tf = ddb_regs.ddb_tf;
- trap_trace_dis--;
#ifdef MULTIPROCESSOR
if (!db_switch_cpu)
@@ -1098,78 +1081,6 @@ db_setpcb(addr, have_addr, count, modif)
db_printf("PID %ld not found.\n", addr);
}
-static void
-db_print_trace_entry(te, i)
- struct traptrace *te;
- int i;
-{
- db_printf("%d:%d p:%d tt:%d:%llx:%llx %llx:%llx ", i,
- (int)te->tl, (int)te->pid,
- (int)te->tt, (unsigned long long)te->tstate,
- (unsigned long long)te->tfault, (unsigned long long)te->tsp,
- (unsigned long long)te->tpc);
- db_printsym((u_long)te->tpc, DB_STGY_PROC, db_printf);
- db_printf(": ");
- if ((te->tpc && !(te->tpc&0x3)) &&
- curproc &&
- (curproc->p_pid == te->pid)) {
- db_disasm((u_long)te->tpc, 0);
- } else db_printf("\n");
-}
-
-void
-db_traptrace(addr, have_addr, count, modif)
- db_expr_t addr;
- int have_addr;
- db_expr_t count;
- char *modif;
-{
- int i, start = 0, full = 0, reverse = 0;
- struct traptrace *end;
-
- start = 0;
- end = &trap_trace_end[0];
-
- {
- register char c, *cp = modif;
- if (modif)
- while ((c = *cp++) != 0) {
- if (c == 'f')
- full = 1;
- if (c == 'r')
- reverse = 1;
- }
- }
-
- if (have_addr) {
- start = addr / (sizeof (struct traptrace));
- if (&trap_trace[start] > &trap_trace_end[0]) {
- db_printf("Address out of range.\n");
- return;
- }
- if (!full) end = &trap_trace[start+1];
- }
-
- db_printf("#:tl p:pid tt:tt:tstate:tfault sp:pc\n");
- if (reverse) {
- if (full && start)
- for (i=start; --i;) {
- db_print_trace_entry(&trap_trace[i], i);
- }
- i = (end - &trap_trace[0]);
- while(--i > start) {
- db_print_trace_entry(&trap_trace[i], i);
- }
- } else {
- for (i=start; &trap_trace[i] < end ; i++) {
- db_print_trace_entry(&trap_trace[i], i);
- }
- if (full && start)
- for (i=0; i < start ; i++) {
- db_print_trace_entry(&trap_trace[i], i);
- }
- }
-}
/*
* Use physical or virtual watchpoint registers -- ugh
@@ -1285,7 +1196,6 @@ struct db_command db_machine_command_tab
{ "stack", db_dump_stack, 0, 0 },
{ "tf", db_dump_trap, 0, 0 },
{ "ts", db_dump_ts, 0, 0 },
- { "traptrace", db_traptrace, 0, 0 },
{ "watch", db_watch, 0, 0 },
{ "window", db_dump_window, 0, 0 },
{ "xir", db_xir, 0, 0 },
Index: sparc64/locore.s
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/sparc64/locore.s,v
retrieving revision 1.183
diff -u -p -r1.183 locore.s
--- sparc64/locore.s 23 May 2016 20:11:49 -0000 1.183
+++ sparc64/locore.s 17 Oct 2016 06:25:38 -0000
@@ -1345,21 +1345,6 @@ panic_red:
.endm
#endif /* DEBUG_NOTDEF */
-#define TRACESIZ 0x01000
- .globl _C_LABEL(trap_trace)
- .globl _C_LABEL(trap_trace_ptr)
- .globl _C_LABEL(trap_trace_end)
- .globl _C_LABEL(trap_trace_dis)
- .data
-_C_LABEL(trap_trace_dis):
- .word 1, 1 ! Starts disabled. DDB turns it on.
-_C_LABEL(trap_trace_ptr):
- .word 0, 0, 0, 0
-_C_LABEL(trap_trace):
- .space TRACESIZ
-_C_LABEL(trap_trace_end):
- .space 0x20 ! safety margin
-
/*
* v9 machines do not have a trap window.
*
Index: sparc64/trap.c
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/sparc64/trap.c,v
retrieving revision 1.94
diff -u -p -r1.94 trap.c
--- sparc64/trap.c 8 Oct 2016 05:49:09 -0000 1.94
+++ sparc64/trap.c 17 Oct 2016 06:25:38 -0000
@@ -431,10 +431,7 @@ trap(struct trapframe64 *tf, unsigned ty
default:
if (type < 0x100) {
- extern int trap_trace_dis;
dopanic:
- trap_trace_dis = 1;
-
panic("trap type 0x%x (%s): pc=%lx npc=%lx pstate=%b",
type, type < N_TRAP_TYPES ? trap_type[type] : T,
pc, (long)tf->tf_npc, pstate, PSTATE_BITS);
@@ -851,8 +848,6 @@ data_access_fault(struct trapframe64 *tf
kfault:
onfault = (long)p->p_addr->u_pcb.pcb_onfault;
if (!onfault) {
- extern int trap_trace_dis;
- trap_trace_dis = 1; /* Disable traptrace for
printf */
(void) splhigh();
panic("kernel data fault: pc=%lx addr=%lx",
pc, addr);
@@ -934,9 +929,6 @@ data_access_error(struct trapframe64 *tf
if (tstate & TSTATE_PRIV) {
if (!onfault) {
- extern int trap_trace_dis;
-
- trap_trace_dis = 1; /* Disable traptrace for printf */
(void) splhigh();
panic("data fault: pc=%lx addr=%lx sfsr=%lb",
(u_long)pc, (long)sfva, sfsr, SFSR_BITS);
@@ -998,8 +990,6 @@ text_access_fault(struct trapframe64 *tf
access_type = PROT_EXEC;
if (tstate & TSTATE_PRIV) {
- extern int trap_trace_dis;
- trap_trace_dis = 1; /* Disable traptrace for printf */
(void) splhigh();
panic("kernel text_access_fault: pc=%lx va=%lx", pc, va);
/* NOTREACHED */
@@ -1031,8 +1021,6 @@ text_access_fault(struct trapframe64 *tf
* fault, deliver SIGSEGV.
*/
if (tstate & TSTATE_PRIV) {
- extern int trap_trace_dis;
- trap_trace_dis = 1; /* Disable traptrace for printf */
(void) splhigh();
panic("kernel text fault: pc=%llx", (unsigned long
long)pc);
/* NOTREACHED */
@@ -1076,13 +1064,9 @@ text_access_error(struct trapframe64 *tf
tstate = tf->tf_tstate;
if ((afsr) != 0) {
- extern int trap_trace_dis;
-
- trap_trace_dis++; /* Disable traptrace for printf */
printf("text_access_error: memory error...\n");
printf("text memory error type %d sfsr=%lx sfva=%lx afsr=%lx
afva=%lx tf=%p\n",
type, sfsr, pc, afsr, afva, tf);
- trap_trace_dis--; /* Reenable traptrace for printf */
if (tstate & TSTATE_PRIV)
panic("text_access_error: kernel memory error");
@@ -1101,8 +1085,6 @@ text_access_error(struct trapframe64 *tf
/* Now munch on protections... */
access_type = PROT_EXEC;
if (tstate & TSTATE_PRIV) {
- extern int trap_trace_dis;
- trap_trace_dis = 1; /* Disable traptrace for printf */
(void) splhigh();
panic("kernel text error: pc=%lx sfsr=%lb", pc,
sfsr, SFSR_BITS);
@@ -1136,8 +1118,6 @@ text_access_error(struct trapframe64 *tf
* fault, deliver SIGSEGV.
*/
if (tstate & TSTATE_PRIV) {
- extern int trap_trace_dis;
- trap_trace_dis = 1; /* Disable traptrace for printf */
(void) splhigh();
panic("kernel text error: pc=%lx sfsr=%lb", pc,
sfsr, SFSR_BITS);