Lines Matching refs:tsk

92 		struct task_struct *tsk, int signr, sigset_t *set,  in setup_sigcontext()  argument
107 struct pt_regs *regs = tsk->thread.regs; in setup_sigcontext()
113 BUG_ON(tsk != current); in setup_sigcontext()
119 if (tsk->thread.used_vr) { in setup_sigcontext()
120 flush_altivec_to_thread(tsk); in setup_sigcontext()
122 err |= __copy_to_user(v_regs, &tsk->thread.vr_state, in setup_sigcontext()
135 tsk->thread.vrsave = vrsave; in setup_sigcontext()
142 flush_fp_to_thread(tsk); in setup_sigcontext()
144 err |= copy_fpr_to_user(&sc->fp_regs, tsk); in setup_sigcontext()
157 if (tsk->thread.used_vsr && ctx_has_vsx_region) { in setup_sigcontext()
158 flush_vsx_to_thread(tsk); in setup_sigcontext()
160 err |= copy_vsx_to_user(v_regs, tsk); in setup_sigcontext()
194 struct task_struct *tsk, in setup_tm_sigcontexts() argument
209 struct pt_regs *regs = tsk->thread.regs; in setup_tm_sigcontexts()
210 unsigned long msr = tsk->thread.regs->msr; in setup_tm_sigcontexts()
213 BUG_ON(tsk != current); in setup_tm_sigcontexts()
223 msr |= tsk->thread.ckpt_regs.msr & (MSR_FP | MSR_VEC | MSR_VSX); in setup_tm_sigcontexts()
237 if (tsk->thread.used_vr) { in setup_tm_sigcontexts()
239 err |= __copy_to_user(v_regs, &tsk->thread.ckvr_state, in setup_tm_sigcontexts()
246 &tsk->thread.vr_state, in setup_tm_sigcontexts()
250 &tsk->thread.ckvr_state, in setup_tm_sigcontexts()
262 tsk->thread.ckvrsave = mfspr(SPRN_VRSAVE); in setup_tm_sigcontexts()
263 err |= __put_user(tsk->thread.ckvrsave, (u32 __user *)&v_regs[33]); in setup_tm_sigcontexts()
265 err |= __put_user(tsk->thread.vrsave, in setup_tm_sigcontexts()
268 err |= __put_user(tsk->thread.ckvrsave, in setup_tm_sigcontexts()
277 err |= copy_ckfpr_to_user(&sc->fp_regs, tsk); in setup_tm_sigcontexts()
279 err |= copy_fpr_to_user(&tm_sc->fp_regs, tsk); in setup_tm_sigcontexts()
281 err |= copy_ckfpr_to_user(&tm_sc->fp_regs, tsk); in setup_tm_sigcontexts()
289 if (tsk->thread.used_vsr) { in setup_tm_sigcontexts()
293 err |= copy_ckvsx_to_user(v_regs, tsk); in setup_tm_sigcontexts()
296 err |= copy_vsx_to_user(tm_v_regs, tsk); in setup_tm_sigcontexts()
298 err |= copy_ckvsx_to_user(tm_v_regs, tsk); in setup_tm_sigcontexts()
312 &tsk->thread.ckpt_regs, GP_REGS_SIZE); in setup_tm_sigcontexts()
328 static long restore_sigcontext(struct task_struct *tsk, sigset_t *set, int sig, in restore_sigcontext() argument
337 struct pt_regs *regs = tsk->thread.regs; in restore_sigcontext()
342 BUG_ON(tsk != current); in restore_sigcontext()
386 err |= __copy_from_user(&tsk->thread.vr_state, v_regs, in restore_sigcontext()
388 tsk->thread.used_vr = true; in restore_sigcontext()
389 } else if (tsk->thread.used_vr) { in restore_sigcontext()
390 memset(&tsk->thread.vr_state, 0, 33 * sizeof(vector128)); in restore_sigcontext()
394 err |= __get_user(tsk->thread.vrsave, (u32 __user *)&v_regs[33]); in restore_sigcontext()
396 tsk->thread.vrsave = 0; in restore_sigcontext()
398 mtspr(SPRN_VRSAVE, tsk->thread.vrsave); in restore_sigcontext()
401 err |= copy_fpr_from_user(tsk, &sc->fp_regs); in restore_sigcontext()
410 err |= copy_vsx_from_user(tsk, v_regs); in restore_sigcontext()
411 tsk->thread.used_vsr = true; in restore_sigcontext()
414 tsk->thread.fp_state.fpr[i][TS_VSRLOWOFFSET] = 0; in restore_sigcontext()
425 static long restore_tm_sigcontexts(struct task_struct *tsk, in restore_tm_sigcontexts() argument
434 struct pt_regs *regs = tsk->thread.regs; in restore_tm_sigcontexts()
439 BUG_ON(tsk != current); in restore_tm_sigcontexts()
446 err |= __copy_from_user(&tsk->thread.ckpt_regs, sc->gp_regs, in restore_tm_sigcontexts()
458 err |= __get_user(tsk->thread.tm_tfhar, &sc->gp_regs[PT_NIP]); in restore_tm_sigcontexts()
474 err |= __get_user(tsk->thread.ckpt_regs.ctr, in restore_tm_sigcontexts()
476 err |= __get_user(tsk->thread.ckpt_regs.link, in restore_tm_sigcontexts()
478 err |= __get_user(tsk->thread.ckpt_regs.xer, in restore_tm_sigcontexts()
480 err |= __get_user(tsk->thread.ckpt_regs.ccr, in restore_tm_sigcontexts()
507 err |= __copy_from_user(&tsk->thread.ckvr_state, v_regs, in restore_tm_sigcontexts()
509 err |= __copy_from_user(&tsk->thread.vr_state, tm_v_regs, in restore_tm_sigcontexts()
513 else if (tsk->thread.used_vr) { in restore_tm_sigcontexts()
514 memset(&tsk->thread.vr_state, 0, 33 * sizeof(vector128)); in restore_tm_sigcontexts()
515 memset(&tsk->thread.ckvr_state, 0, 33 * sizeof(vector128)); in restore_tm_sigcontexts()
519 err |= __get_user(tsk->thread.ckvrsave, in restore_tm_sigcontexts()
521 err |= __get_user(tsk->thread.vrsave, in restore_tm_sigcontexts()
525 tsk->thread.vrsave = 0; in restore_tm_sigcontexts()
526 tsk->thread.ckvrsave = 0; in restore_tm_sigcontexts()
529 mtspr(SPRN_VRSAVE, tsk->thread.vrsave); in restore_tm_sigcontexts()
532 err |= copy_fpr_from_user(tsk, &tm_sc->fp_regs); in restore_tm_sigcontexts()
533 err |= copy_ckfpr_from_user(tsk, &sc->fp_regs); in restore_tm_sigcontexts()
543 err |= copy_vsx_from_user(tsk, tm_v_regs); in restore_tm_sigcontexts()
544 err |= copy_ckvsx_from_user(tsk, v_regs); in restore_tm_sigcontexts()
545 tsk->thread.used_vsr = true; in restore_tm_sigcontexts()
548 tsk->thread.fp_state.fpr[i][TS_VSRLOWOFFSET] = 0; in restore_tm_sigcontexts()
549 tsk->thread.ckfp_state.fpr[i][TS_VSRLOWOFFSET] = 0; in restore_tm_sigcontexts()
555 tsk->thread.tm_texasr |= TEXASR_FS; in restore_tm_sigcontexts()
585 tm_recheckpoint(&tsk->thread); in restore_tm_sigcontexts()
589 load_fp_state(&tsk->thread.fp_state); in restore_tm_sigcontexts()
590 regs->msr |= (MSR_FP | tsk->thread.fpexc_mode); in restore_tm_sigcontexts()
593 load_vr_state(&tsk->thread.vr_state); in restore_tm_sigcontexts()
821 struct task_struct *tsk) in handle_rt_signal64() argument
826 struct pt_regs *regs = tsk->thread.regs; in handle_rt_signal64()
828 BUG_ON(tsk != current); in handle_rt_signal64()
830 frame = get_sigframe(ksig, get_tm_stackpointer(tsk), sizeof(*frame), 0); in handle_rt_signal64()
851 tsk, ksig->sig, NULL, in handle_rt_signal64()
857 err |= setup_sigcontext(&frame->uc.uc_mcontext, tsk, ksig->sig, in handle_rt_signal64()
866 tsk->thread.fp_state.fpscr = 0; in handle_rt_signal64()
869 if (vdso64_rt_sigtramp && tsk->mm->context.vdso_base) { in handle_rt_signal64()
870 regs->link = tsk->mm->context.vdso_base + vdso64_rt_sigtramp; in handle_rt_signal64()
920 tsk->comm, tsk->pid, "setup_rt_frame", in handle_rt_signal64()