Changeset View
Changeset View
Standalone View
Standalone View
head/sys/i386/i386/trap.c
Show First 20 Lines • Show All 756 Lines • ▼ Show 20 Lines | uprintf("pid %d comm %s: signal %d err %x code %d type %d " | ||||
fubyte((void *)(frame->tf_eip + 4)), | fubyte((void *)(frame->tf_eip + 4)), | ||||
fubyte((void *)(frame->tf_eip + 5)), | fubyte((void *)(frame->tf_eip + 5)), | ||||
fubyte((void *)(frame->tf_eip + 6)), | fubyte((void *)(frame->tf_eip + 6)), | ||||
fubyte((void *)(frame->tf_eip + 7))); | fubyte((void *)(frame->tf_eip + 7))); | ||||
} | } | ||||
KASSERT((read_eflags() & PSL_I) != 0, ("interrupts disabled")); | KASSERT((read_eflags() & 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); | |||||
user: | user: | ||||
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")); | ||||
} | } | ||||
static int | static int | ||||
trap_pfault(struct trapframe *frame, int usermode, vm_offset_t eva) | trap_pfault(struct trapframe *frame, int usermode, vm_offset_t eva) | ||||
▲ Show 20 Lines • Show All 396 Lines • Show Last 20 Lines |