Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/amd64/trap.c
Show First 20 Lines • Show All 653 Lines • ▼ Show 20 Lines | uprintf("pid %d comm %s: signal %d err %lx code %d type %d " | ||||
fubyte((void *)(frame->tf_rip + 4)), | fubyte((void *)(frame->tf_rip + 4)), | ||||
fubyte((void *)(frame->tf_rip + 5)), | fubyte((void *)(frame->tf_rip + 5)), | ||||
fubyte((void *)(frame->tf_rip + 6)), | fubyte((void *)(frame->tf_rip + 6)), | ||||
fubyte((void *)(frame->tf_rip + 7))); | fubyte((void *)(frame->tf_rip + 7))); | ||||
} | } | ||||
KASSERT((read_rflags() & PSL_I) != 0, ("interrupts disabled")); | KASSERT((read_rflags() & PSL_I) != 0, ("interrupts disabled")); | ||||
trapsignal(td, &ksi); | trapsignal(td, &ksi); | ||||
/* | |||||
* Clear any pending debug exceptions after allowing a | |||||
* debugger to read DR6 while stopped in trapsignal(). | |||||
*/ | |||||
if (type == T_TRCTRAP) | |||||
load_dr6(0); | |||||
userret: | userret: | ||||
userret(td, frame); | userret(td, frame); | ||||
KASSERT(PCB_USER_FPU(td->td_pcb), | KASSERT(PCB_USER_FPU(td->td_pcb), | ||||
("Return from trap with kernel FPU ctx leaked")); | ("Return from trap with kernel FPU ctx leaked")); | ||||
} | } | ||||
/* | /* | ||||
* Ensure that we ignore any DTrace-induced faults. This function cannot | * Ensure that we ignore any DTrace-induced faults. This function cannot | ||||
▲ Show 20 Lines • Show All 412 Lines • Show Last 20 Lines |