diff options
-rw-r--r-- | sys/alpha/alpha/trap.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/sys/alpha/alpha/trap.c b/sys/alpha/alpha/trap.c index 99278fa..c4c402a 100644 --- a/sys/alpha/alpha/trap.c +++ b/sys/alpha/alpha/trap.c @@ -235,12 +235,12 @@ printtrap(a0, a1, a2, entry, framep, isfatal, user) printf(" pc = 0x%lx\n", framep->tf_regs[FRAME_PC]); printf(" ra = 0x%lx\n", framep->tf_regs[FRAME_RA]); printf(" sp = 0x%lx\n", framep->tf_regs[FRAME_SP]); - if (curproc != NULL && (curproc->p_flag & P_KTHREAD) == 0) + if (curthread != NULL && (curthread->td_proc->p_flag & P_KTHREAD) == 0) printf(" usp = 0x%lx\n", alpha_pal_rdusp()); - printf(" curproc = %p\n", curproc); - if (curproc != NULL) - printf(" pid = %d, comm = %s\n", curproc->p_pid, - curproc->p_comm); + printf(" curthread = %p\n", curthread); + if (curthread != NULL) + printf(" pid = %d, comm = %s\n", + curthread->td_proc->p_pid, curthread->td_proc->p_comm); printf("\n"); } @@ -275,6 +275,10 @@ trap(a0, a1, a2, entry, framep) pcpup = (struct pcpu *) alpha_pal_rdval(); td = curthread; #ifdef SMP + if (td == NULL) { + printtrap(a0, a1, a2, entry, framep, 1, 0); + cpu_halt(); + } td->td_md.md_kernnest++; cpu_critical_exit(s); #endif |