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);

Reply via email to