Changeset View
Changeset View
Standalone View
Standalone View
sys/riscv/riscv/exec_machdep.c
Show First 20 Lines • Show All 409 Lines • ▼ Show 20 Lines | sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask) | ||||
tf->tf_a[0] = sig; | tf->tf_a[0] = sig; | ||||
tf->tf_a[1] = (register_t)&fp->sf_si; | tf->tf_a[1] = (register_t)&fp->sf_si; | ||||
tf->tf_a[2] = (register_t)&fp->sf_uc; | tf->tf_a[2] = (register_t)&fp->sf_uc; | ||||
tf->tf_sepc = (register_t)catcher; | tf->tf_sepc = (register_t)catcher; | ||||
tf->tf_sp = (register_t)fp; | tf->tf_sp = (register_t)fp; | ||||
sysent = p->p_sysent; | sysent = p->p_sysent; | ||||
if (sysent->sv_sigcode_base != 0) | if (PROC_HAS_SHP(p)) | ||||
tf->tf_ra = (register_t)PROC_SIGCODE(p); | tf->tf_ra = (register_t)PROC_SIGCODE(p); | ||||
else | else | ||||
tf->tf_ra = (register_t)(PROC_PS_STRINGS(p) - | tf->tf_ra = (register_t)(PROC_PS_STRINGS(p) - | ||||
*(sysent->sv_szsigcode)); | *(sysent->sv_szsigcode)); | ||||
CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_sepc, | CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_sepc, | ||||
tf->tf_sp); | tf->tf_sp); | ||||
PROC_LOCK(p); | PROC_LOCK(p); | ||||
mtx_lock(&psp->ps_mtx); | mtx_lock(&psp->ps_mtx); | ||||
} | } |