X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/blobdiff_plain/973c11b9c3cdde88fe6ca0ef2c5af56a8c49e014..2123d4c3ca3af9eacc959aeef05afcb05ed0af39:/sys/platform/pc64/amd64/trap.c diff --git a/sys/platform/pc64/amd64/trap.c b/sys/platform/pc64/amd64/trap.c index 960fe69398..dd036f0503 100644 --- a/sys/platform/pc64/amd64/trap.c +++ b/sys/platform/pc64/amd64/trap.c @@ -75,6 +75,7 @@ #include #include #include +#include #include #include #include @@ -102,9 +103,6 @@ static int trap_pfault(struct trapframe *, int); static void trap_fatal(struct trapframe *, vm_offset_t); void dblfault_handler(struct trapframe *frame); -#define PCPU_GET(member) ((mycpu)->gd_##member) -#define PCPU_INC(member) ((mycpu)->gd_##member)++ - #define MAX_TRAP_MSG 30 static char *trap_msg[] = { "", /* 0 unused */ @@ -357,7 +355,7 @@ trap(struct trapframe *frame) p = td->td_proc; -#ifndef JG +#ifdef JG kprintf0("TRAP "); kprintf0("\"%s\" type=%ld\n", trap_msg[frame->tf_trapno], frame->tf_trapno); @@ -603,7 +601,7 @@ trap(struct trapframe *frame) * selectors and pointers when the user changes * them. */ - kprintf0("trap.c line %d\n", __LINE__); + kprintf("trap.c line %d\n", __LINE__); if (mycpu->gd_intr_nesting_level == 0) { if (td->td_pcb->pcb_onfault) { frame->tf_rip = (register_t) @@ -877,8 +875,9 @@ nogo: * NOTE: on amd64 we have a tf_addr field in the trapframe, no * kludge is needed to pass the fault address to signal handlers. */ - kprintf("seg-fault accessing address %p ip=%p\n", - (void *)va, (void *)frame->tf_rip); + struct proc *p = td->td_proc; + kprintf("seg-fault accessing address %p rip=%p pid=%d p_comm=%s\n", + (void *)va, (void *)frame->tf_rip, p->p_pid, p->p_comm); /* Debugger("seg-fault"); */ return((rv == KERN_PROTECTION_FAILURE) ? SIGBUS : SIGSEGV); @@ -904,9 +903,10 @@ trap_fatal(struct trapframe *frame, vm_offset_t eva) kprintf("\n\nFatal trap %d: %s while in %s mode\n", type, msg, ISPL(frame->tf_cs) == SEL_UPL ? "user" : "kernel"); #ifdef SMP - /* two separate prints in case of a trap on an unmapped page */ - kprintf("cpuid = %d; ", PCPU_GET(cpuid)); - kprintf("apic id = %02x\n", PCPU_GET(apic_id)); + /* three separate prints in case of a trap on an unmapped page */ + kprintf("mp_lock = %08x; ", mp_lock); + kprintf("cpuid = %d; ", mycpu->gd_cpuid); + kprintf("lapic->id = %08x\n", lapic->id); #endif if (type == T_PAGEFLT) { kprintf("fault virtual address = 0x%lx\n", eva); @@ -980,9 +980,10 @@ dblfault_handler(struct trapframe *frame) kprintf("rsp = 0x%lx\n", frame->tf_rsp); kprintf("rbp = 0x%lx\n", frame->tf_rbp); #ifdef SMP - /* two separate prints in case of a trap on an unmapped page */ - kprintf("cpuid = %d; ", PCPU_GET(cpuid)); - kprintf("apic id = %02x\n", PCPU_GET(apic_id)); + /* three separate prints in case of a trap on an unmapped page */ + kprintf("mp_lock = %08x; ", mp_lock); + kprintf("cpuid = %d; ", mycpu->gd_cpuid); + kprintf("lapic->id = %08x\n", lapic->id); #endif panic("double fault"); } @@ -1024,11 +1025,9 @@ syscall2(struct trapframe *frame) int reg, regcnt; union sysunion args; register_t *argsdst; - kprintf0("SYSCALL rip = %016llx\n", frame->tf_rip); - PCPU_INC(cnt.v_syscall); + mycpu->gd_cnt.v_syscall++; - kprintf0("\033[31mSYSCALL %ld\033[39m\n", frame->tf_rax); #ifdef DIAGNOSTIC if (ISPL(frame->tf_cs) != SEL_UPL) { get_mplock(); @@ -1041,7 +1040,7 @@ syscall2(struct trapframe *frame) frame->tf_eax); #ifdef SMP - KASSERT(td->td_mpcount == 0, ("badmpcount syscall2 from %p", (void *)frame->tf_eip)); + KASSERT(td->td_mpcount == 0, ("badmpcount syscall2 from %p", (void *)frame->tf_rip)); if (syscall_mpsafe == 0) MAKEMPSAFE(have_mplock); #endif @@ -1183,7 +1182,6 @@ out: lp = curthread->td_lwp; frame->tf_rax = args.sysmsg_fds[0]; frame->tf_rdx = args.sysmsg_fds[1]; - kprintf0("RESULT %lld %lld\n", frame->tf_rax, frame->tf_rdx); frame->tf_rflags &= ~PSL_C; break; case ERESTART: @@ -1195,7 +1193,6 @@ out: */ frame->tf_rip -= frame->tf_err; frame->tf_r10 = frame->tf_rcx; - td->td_pcb->pcb_flags |= PCB_FULLCTX; break; case EJUSTRETURN: break; @@ -1209,7 +1206,6 @@ bad: else error = p->p_sysent->sv_errtbl[error]; } - kprintf0("ERROR %d\n", error); frame->tf_rax = error; frame->tf_rflags |= PSL_C; break; @@ -1249,7 +1245,7 @@ bad: * Release the MP lock if we had to get it */ KASSERT(td->td_mpcount == have_mplock, - ("badmpcount syscall2/end from %p", (void *)frame->tf_eip)); + ("badmpcount syscall2/end from %p", (void *)frame->tf_rip)); if (have_mplock) rel_mplock(); #endif @@ -1264,7 +1260,6 @@ bad: void fork_return(struct lwp *lp, struct trapframe *frame) { - kprintf0("fork return\n"); frame->tf_rax = 0; /* Child returns zero */ frame->tf_rflags &= ~PSL_C; /* success */ frame->tf_rdx = 1; @@ -1282,7 +1277,6 @@ fork_return(struct lwp *lp, struct trapframe *frame) void generic_lwp_return(struct lwp *lp, struct trapframe *frame) { - kprintf0("generic_lwp_return\n"); struct proc *p = lp->lwp_proc; /*