Lines Matching refs:tsk

88 static void check_if_tm_restore_required(struct task_struct *tsk)  in check_if_tm_restore_required()  argument
96 if (tsk == current && tsk->thread.regs && in check_if_tm_restore_required()
97 MSR_TM_ACTIVE(tsk->thread.regs->msr) && in check_if_tm_restore_required()
99 tsk->thread.ckpt_regs.msr = tsk->thread.regs->msr; in check_if_tm_restore_required()
105 static inline void check_if_tm_restore_required(struct task_struct *tsk) { } in check_if_tm_restore_required() argument
159 static void __giveup_fpu(struct task_struct *tsk) in __giveup_fpu() argument
163 save_fpu(tsk); in __giveup_fpu()
164 msr = tsk->thread.regs->msr; in __giveup_fpu()
170 tsk->thread.regs->msr = msr; in __giveup_fpu()
173 void giveup_fpu(struct task_struct *tsk) in giveup_fpu() argument
175 check_if_tm_restore_required(tsk); in giveup_fpu()
178 __giveup_fpu(tsk); in giveup_fpu()
187 void flush_fp_to_thread(struct task_struct *tsk) in flush_fp_to_thread() argument
189 if (tsk->thread.regs) { in flush_fp_to_thread()
199 if (tsk->thread.regs->msr & MSR_FP) { in flush_fp_to_thread()
207 BUG_ON(tsk != current); in flush_fp_to_thread()
208 giveup_fpu(tsk); in flush_fp_to_thread()
240 static int restore_fp(struct task_struct *tsk) in restore_fp() argument
242 if (tsk->thread.load_fp) { in restore_fp()
250 static int restore_fp(struct task_struct *tsk) { return 0; } in restore_fp() argument
256 static void __giveup_altivec(struct task_struct *tsk) in __giveup_altivec() argument
260 save_altivec(tsk); in __giveup_altivec()
261 msr = tsk->thread.regs->msr; in __giveup_altivec()
267 tsk->thread.regs->msr = msr; in __giveup_altivec()
270 void giveup_altivec(struct task_struct *tsk) in giveup_altivec() argument
272 check_if_tm_restore_required(tsk); in giveup_altivec()
275 __giveup_altivec(tsk); in giveup_altivec()
309 void flush_altivec_to_thread(struct task_struct *tsk) in flush_altivec_to_thread() argument
311 if (tsk->thread.regs) { in flush_altivec_to_thread()
313 if (tsk->thread.regs->msr & MSR_VEC) { in flush_altivec_to_thread()
314 BUG_ON(tsk != current); in flush_altivec_to_thread()
315 giveup_altivec(tsk); in flush_altivec_to_thread()
322 static int restore_altivec(struct task_struct *tsk) in restore_altivec() argument
324 if (cpu_has_feature(CPU_FTR_ALTIVEC) && (tsk->thread.load_vec)) { in restore_altivec()
325 load_vr_state(&tsk->thread.vr_state); in restore_altivec()
326 tsk->thread.used_vr = 1; in restore_altivec()
327 tsk->thread.load_vec++; in restore_altivec()
335 static inline int restore_altivec(struct task_struct *tsk) { return 0; } in restore_altivec() argument
339 static void __giveup_vsx(struct task_struct *tsk) in __giveup_vsx() argument
341 unsigned long msr = tsk->thread.regs->msr; in __giveup_vsx()
351 __giveup_fpu(tsk); in __giveup_vsx()
353 __giveup_altivec(tsk); in __giveup_vsx()
356 static void giveup_vsx(struct task_struct *tsk) in giveup_vsx() argument
358 check_if_tm_restore_required(tsk); in giveup_vsx()
361 __giveup_vsx(tsk); in giveup_vsx()
391 void flush_vsx_to_thread(struct task_struct *tsk) in flush_vsx_to_thread() argument
393 if (tsk->thread.regs) { in flush_vsx_to_thread()
395 if (tsk->thread.regs->msr & (MSR_VSX|MSR_VEC|MSR_FP)) { in flush_vsx_to_thread()
396 BUG_ON(tsk != current); in flush_vsx_to_thread()
397 giveup_vsx(tsk); in flush_vsx_to_thread()
404 static int restore_vsx(struct task_struct *tsk) in restore_vsx() argument
407 tsk->thread.used_vsr = 1; in restore_vsx()
414 static inline int restore_vsx(struct task_struct *tsk) { return 0; } in restore_vsx() argument
418 void giveup_spe(struct task_struct *tsk) in giveup_spe() argument
420 check_if_tm_restore_required(tsk); in giveup_spe()
423 __giveup_spe(tsk); in giveup_spe()
441 void flush_spe_to_thread(struct task_struct *tsk) in flush_spe_to_thread() argument
443 if (tsk->thread.regs) { in flush_spe_to_thread()
445 if (tsk->thread.regs->msr & MSR_SPE) { in flush_spe_to_thread()
446 BUG_ON(tsk != current); in flush_spe_to_thread()
447 tsk->thread.spefscr = mfspr(SPRN_SPEFSCR); in flush_spe_to_thread()
448 giveup_spe(tsk); in flush_spe_to_thread()
479 void giveup_all(struct task_struct *tsk) in giveup_all() argument
483 if (!tsk->thread.regs) in giveup_all()
486 check_if_tm_restore_required(tsk); in giveup_all()
488 usermsr = tsk->thread.regs->msr; in giveup_all()
499 __giveup_fpu(tsk); in giveup_all()
503 __giveup_altivec(tsk); in giveup_all()
507 __giveup_spe(tsk); in giveup_all()
555 static void save_all(struct task_struct *tsk) in save_all() argument
559 if (!tsk->thread.regs) in save_all()
562 usermsr = tsk->thread.regs->msr; in save_all()
572 save_fpu(tsk); in save_all()
575 save_altivec(tsk); in save_all()
578 __giveup_spe(tsk); in save_all()
581 thread_pkey_regs_save(&tsk->thread); in save_all()
584 void flush_all_to_thread(struct task_struct *tsk) in flush_all_to_thread() argument
586 if (tsk->thread.regs) { in flush_all_to_thread()
588 BUG_ON(tsk != current); in flush_all_to_thread()
590 if (tsk->thread.regs->msr & MSR_SPE) in flush_all_to_thread()
591 tsk->thread.spefscr = mfspr(SPRN_SPEFSCR); in flush_all_to_thread()
593 save_all(tsk); in flush_all_to_thread()
824 static inline bool tm_enabled(struct task_struct *tsk) in tm_enabled() argument
826 return tsk && tsk->thread.regs && (tsk->thread.regs->msr & MSR_TM); in tm_enabled()
879 static inline void tm_reclaim_task(struct task_struct *tsk) in tm_reclaim_task() argument
891 struct thread_struct *thr = &tsk->thread; in tm_reclaim_task()
903 tsk->pid, thr->regs->nip, in tm_reclaim_task()
910 tsk->pid); in tm_reclaim_task()
1821 int set_fpexc_mode(struct task_struct *tsk, unsigned int val) in set_fpexc_mode() argument
1823 struct pt_regs *regs = tsk->thread.regs; in set_fpexc_mode()
1844 tsk->thread.spefscr_last = mfspr(SPRN_SPEFSCR); in set_fpexc_mode()
1845 tsk->thread.fpexc_mode = val & in set_fpexc_mode()
1863 tsk->thread.fpexc_mode = __pack_fe01(val); in set_fpexc_mode()
1866 | tsk->thread.fpexc_mode; in set_fpexc_mode()
1870 int get_fpexc_mode(struct task_struct *tsk, unsigned long adr) in get_fpexc_mode() argument
1874 if (tsk->thread.fpexc_mode & PR_FP_EXC_SW_ENABLE) in get_fpexc_mode()
1889 tsk->thread.spefscr_last = mfspr(SPRN_SPEFSCR); in get_fpexc_mode()
1890 val = tsk->thread.fpexc_mode; in get_fpexc_mode()
1897 val = __unpack_fe01(tsk->thread.fpexc_mode); in get_fpexc_mode()
1901 int set_endian(struct task_struct *tsk, unsigned int val) in set_endian() argument
1903 struct pt_regs *regs = tsk->thread.regs; in set_endian()
1922 int get_endian(struct task_struct *tsk, unsigned long adr) in get_endian() argument
1924 struct pt_regs *regs = tsk->thread.regs; in get_endian()
1945 int set_unalign_ctl(struct task_struct *tsk, unsigned int val) in set_unalign_ctl() argument
1947 tsk->thread.align_ctl = val; in set_unalign_ctl()
1951 int get_unalign_ctl(struct task_struct *tsk, unsigned long adr) in get_unalign_ctl() argument
1953 return put_user(tsk->thread.align_ctl, (unsigned int __user *)adr); in get_unalign_ctl()
2031 void show_stack(struct task_struct *tsk, unsigned long *stack) in show_stack() argument
2041 if (tsk == NULL) in show_stack()
2042 tsk = current; in show_stack()
2044 if (!try_get_task_stack(tsk)) in show_stack()
2049 if (tsk == current) in show_stack()
2052 sp = tsk->thread.ksp; in show_stack()
2058 if (!validate_sp(sp, tsk, STACK_FRAME_OVERHEAD)) in show_stack()
2082 if (validate_sp(sp, tsk, STACK_INT_FRAME_SIZE) in show_stack()
2095 put_task_stack(tsk); in show_stack()