in kernel/signal.c [79:135]
static int restore_sigframe(struct pt_regs *regs,
struct rt_sigframe __user * sf)
{
sigset_t set;
int err;
err = __copy_from_user(&set, &sf->uc.uc_sigmask, sizeof(set));
if (err == 0) {
set_current_blocked(&set);
}
__get_user_error(regs->uregs[0], &sf->uc.uc_mcontext.nds32_r0, err);
__get_user_error(regs->uregs[1], &sf->uc.uc_mcontext.nds32_r1, err);
__get_user_error(regs->uregs[2], &sf->uc.uc_mcontext.nds32_r2, err);
__get_user_error(regs->uregs[3], &sf->uc.uc_mcontext.nds32_r3, err);
__get_user_error(regs->uregs[4], &sf->uc.uc_mcontext.nds32_r4, err);
__get_user_error(regs->uregs[5], &sf->uc.uc_mcontext.nds32_r5, err);
__get_user_error(regs->uregs[6], &sf->uc.uc_mcontext.nds32_r6, err);
__get_user_error(regs->uregs[7], &sf->uc.uc_mcontext.nds32_r7, err);
__get_user_error(regs->uregs[8], &sf->uc.uc_mcontext.nds32_r8, err);
__get_user_error(regs->uregs[9], &sf->uc.uc_mcontext.nds32_r9, err);
__get_user_error(regs->uregs[10], &sf->uc.uc_mcontext.nds32_r10, err);
__get_user_error(regs->uregs[11], &sf->uc.uc_mcontext.nds32_r11, err);
__get_user_error(regs->uregs[12], &sf->uc.uc_mcontext.nds32_r12, err);
__get_user_error(regs->uregs[13], &sf->uc.uc_mcontext.nds32_r13, err);
__get_user_error(regs->uregs[14], &sf->uc.uc_mcontext.nds32_r14, err);
__get_user_error(regs->uregs[15], &sf->uc.uc_mcontext.nds32_r15, err);
__get_user_error(regs->uregs[16], &sf->uc.uc_mcontext.nds32_r16, err);
__get_user_error(regs->uregs[17], &sf->uc.uc_mcontext.nds32_r17, err);
__get_user_error(regs->uregs[18], &sf->uc.uc_mcontext.nds32_r18, err);
__get_user_error(regs->uregs[19], &sf->uc.uc_mcontext.nds32_r19, err);
__get_user_error(regs->uregs[20], &sf->uc.uc_mcontext.nds32_r20, err);
__get_user_error(regs->uregs[21], &sf->uc.uc_mcontext.nds32_r21, err);
__get_user_error(regs->uregs[22], &sf->uc.uc_mcontext.nds32_r22, err);
__get_user_error(regs->uregs[23], &sf->uc.uc_mcontext.nds32_r23, err);
__get_user_error(regs->uregs[24], &sf->uc.uc_mcontext.nds32_r24, err);
__get_user_error(regs->uregs[25], &sf->uc.uc_mcontext.nds32_r25, err);
__get_user_error(regs->fp, &sf->uc.uc_mcontext.nds32_fp, err);
__get_user_error(regs->gp, &sf->uc.uc_mcontext.nds32_gp, err);
__get_user_error(regs->lp, &sf->uc.uc_mcontext.nds32_lp, err);
__get_user_error(regs->sp, &sf->uc.uc_mcontext.nds32_sp, err);
__get_user_error(regs->ipc, &sf->uc.uc_mcontext.nds32_ipc, err);
#if defined(CONFIG_HWZOL)
__get_user_error(regs->lc, &sf->uc.uc_mcontext.zol.nds32_lc, err);
__get_user_error(regs->le, &sf->uc.uc_mcontext.zol.nds32_le, err);
__get_user_error(regs->lb, &sf->uc.uc_mcontext.zol.nds32_lb, err);
#endif
#if IS_ENABLED(CONFIG_FPU)
err |= restore_sigcontext_fpu(regs, &sf->uc.uc_mcontext);
#endif
/*
* Avoid sys_rt_sigreturn() restarting.
*/
forget_syscall(regs);
return err;
}