Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/ia32/ia32_signal.c
Show First 20 Lines • Show All 416 Lines • ▼ Show 20 Lines | |||||
#ifdef DEBUG | #ifdef DEBUG | ||||
printf("process %ld has trashed its stack\n", (long)p->p_pid); | printf("process %ld has trashed its stack\n", (long)p->p_pid); | ||||
#endif | #endif | ||||
PROC_LOCK(p); | PROC_LOCK(p); | ||||
sigexit(td, SIGILL); | sigexit(td, SIGILL); | ||||
} | } | ||||
regs->tf_rsp = (uintptr_t)fp; | regs->tf_rsp = (uintptr_t)fp; | ||||
regs->tf_rip = p->p_sysent->sv_psstrings - | regs->tf_rip = p->p_psstrings - | ||||
(_binary_elf_vdso32_so_1_end - _binary_elf_vdso32_so_1_start) + | (_binary_elf_vdso32_so_1_end - _binary_elf_vdso32_so_1_start) + | ||||
VDSO_IA32_OSIGCODE_OFFSET; | VDSO_IA32_OSIGCODE_OFFSET; | ||||
regs->tf_rflags &= ~(PSL_T | PSL_D); | regs->tf_rflags &= ~(PSL_T | PSL_D); | ||||
regs->tf_cs = _ucode32sel; | regs->tf_cs = _ucode32sel; | ||||
regs->tf_ds = _udatasel; | regs->tf_ds = _udatasel; | ||||
regs->tf_es = _udatasel; | regs->tf_es = _udatasel; | ||||
regs->tf_fs = _udatasel; | regs->tf_fs = _udatasel; | ||||
regs->tf_ss = _udatasel; | regs->tf_ss = _udatasel; | ||||
▲ Show 20 Lines • Show All 531 Lines • Show Last 20 Lines |