Lines Matching refs:tsk
83 static void check_if_tm_restore_required(struct task_struct *tsk) in check_if_tm_restore_required() argument
91 if (tsk == current && tsk->thread.regs && in check_if_tm_restore_required()
92 MSR_TM_ACTIVE(tsk->thread.regs->msr) && in check_if_tm_restore_required()
94 regs_set_return_msr(&tsk->thread.ckpt_regs, in check_if_tm_restore_required()
95 tsk->thread.regs->msr); in check_if_tm_restore_required()
101 static inline void check_if_tm_restore_required(struct task_struct *tsk) { } in check_if_tm_restore_required() argument
151 static void __giveup_fpu(struct task_struct *tsk) in __giveup_fpu() argument
155 save_fpu(tsk); in __giveup_fpu()
156 msr = tsk->thread.regs->msr; in __giveup_fpu()
160 regs_set_return_msr(tsk->thread.regs, msr); in __giveup_fpu()
163 void giveup_fpu(struct task_struct *tsk) in giveup_fpu() argument
165 check_if_tm_restore_required(tsk); in giveup_fpu()
168 __giveup_fpu(tsk); in giveup_fpu()
177 void flush_fp_to_thread(struct task_struct *tsk) in flush_fp_to_thread() argument
179 if (tsk->thread.regs) { in flush_fp_to_thread()
189 if (tsk->thread.regs->msr & MSR_FP) { in flush_fp_to_thread()
197 BUG_ON(tsk != current); in flush_fp_to_thread()
198 giveup_fpu(tsk); in flush_fp_to_thread()
230 static inline void __giveup_fpu(struct task_struct *tsk) { } in __giveup_fpu() argument
234 static void __giveup_altivec(struct task_struct *tsk) in __giveup_altivec() argument
238 save_altivec(tsk); in __giveup_altivec()
239 msr = tsk->thread.regs->msr; in __giveup_altivec()
243 regs_set_return_msr(tsk->thread.regs, msr); in __giveup_altivec()
246 void giveup_altivec(struct task_struct *tsk) in giveup_altivec() argument
248 check_if_tm_restore_required(tsk); in giveup_altivec()
251 __giveup_altivec(tsk); in giveup_altivec()
285 void flush_altivec_to_thread(struct task_struct *tsk) in flush_altivec_to_thread() argument
287 if (tsk->thread.regs) { in flush_altivec_to_thread()
289 if (tsk->thread.regs->msr & MSR_VEC) { in flush_altivec_to_thread()
290 BUG_ON(tsk != current); in flush_altivec_to_thread()
291 giveup_altivec(tsk); in flush_altivec_to_thread()
300 static void __giveup_vsx(struct task_struct *tsk) in __giveup_vsx() argument
302 unsigned long msr = tsk->thread.regs->msr; in __giveup_vsx()
312 __giveup_fpu(tsk); in __giveup_vsx()
314 __giveup_altivec(tsk); in __giveup_vsx()
317 static void giveup_vsx(struct task_struct *tsk) in giveup_vsx() argument
319 check_if_tm_restore_required(tsk); in giveup_vsx()
322 __giveup_vsx(tsk); in giveup_vsx()
352 void flush_vsx_to_thread(struct task_struct *tsk) in flush_vsx_to_thread() argument
354 if (tsk->thread.regs) { in flush_vsx_to_thread()
356 if (tsk->thread.regs->msr & (MSR_VSX|MSR_VEC|MSR_FP)) { in flush_vsx_to_thread()
357 BUG_ON(tsk != current); in flush_vsx_to_thread()
358 giveup_vsx(tsk); in flush_vsx_to_thread()
367 void giveup_spe(struct task_struct *tsk) in giveup_spe() argument
369 check_if_tm_restore_required(tsk); in giveup_spe()
372 __giveup_spe(tsk); in giveup_spe()
390 void flush_spe_to_thread(struct task_struct *tsk) in flush_spe_to_thread() argument
392 if (tsk->thread.regs) { in flush_spe_to_thread()
394 if (tsk->thread.regs->msr & MSR_SPE) { in flush_spe_to_thread()
395 BUG_ON(tsk != current); in flush_spe_to_thread()
396 tsk->thread.spefscr = mfspr(SPRN_SPEFSCR); in flush_spe_to_thread()
397 giveup_spe(tsk); in flush_spe_to_thread()
421 void giveup_all(struct task_struct *tsk) in giveup_all() argument
425 if (!tsk->thread.regs) in giveup_all()
428 check_if_tm_restore_required(tsk); in giveup_all()
430 usermsr = tsk->thread.regs->msr; in giveup_all()
440 __giveup_fpu(tsk); in giveup_all()
442 __giveup_altivec(tsk); in giveup_all()
444 __giveup_spe(tsk); in giveup_all()
563 static void save_all(struct task_struct *tsk) in save_all() argument
567 if (!tsk->thread.regs) in save_all()
570 usermsr = tsk->thread.regs->msr; in save_all()
580 save_fpu(tsk); in save_all()
583 save_altivec(tsk); in save_all()
586 __giveup_spe(tsk); in save_all()
591 void flush_all_to_thread(struct task_struct *tsk) in flush_all_to_thread() argument
593 if (tsk->thread.regs) { in flush_all_to_thread()
595 BUG_ON(tsk != current); in flush_all_to_thread()
597 if (tsk->thread.regs->msr & MSR_SPE) in flush_all_to_thread()
598 tsk->thread.spefscr = mfspr(SPRN_SPEFSCR); in flush_all_to_thread()
600 save_all(tsk); in flush_all_to_thread()
926 static inline bool tm_enabled(struct task_struct *tsk) in tm_enabled() argument
928 return tsk && tsk->thread.regs && (tsk->thread.regs->msr & MSR_TM); in tm_enabled()
981 static inline void tm_reclaim_task(struct task_struct *tsk) in tm_reclaim_task() argument
993 struct thread_struct *thr = &tsk->thread; in tm_reclaim_task()
1005 tsk->pid, thr->regs->nip, in tm_reclaim_task()
1012 tsk->pid); in tm_reclaim_task()
2020 int set_fpexc_mode(struct task_struct *tsk, unsigned int val) in set_fpexc_mode() argument
2022 struct pt_regs *regs = tsk->thread.regs; in set_fpexc_mode()
2043 tsk->thread.spefscr_last = mfspr(SPRN_SPEFSCR); in set_fpexc_mode()
2044 tsk->thread.fpexc_mode = val & in set_fpexc_mode()
2060 tsk->thread.fpexc_mode = __pack_fe01(val); in set_fpexc_mode()
2063 | tsk->thread.fpexc_mode); in set_fpexc_mode()
2068 int get_fpexc_mode(struct task_struct *tsk, unsigned long adr) in get_fpexc_mode() argument
2072 if (tsk->thread.fpexc_mode & PR_FP_EXC_SW_ENABLE) { in get_fpexc_mode()
2087 tsk->thread.spefscr_last = mfspr(SPRN_SPEFSCR); in get_fpexc_mode()
2088 val = tsk->thread.fpexc_mode; in get_fpexc_mode()
2093 val = __unpack_fe01(tsk->thread.fpexc_mode); in get_fpexc_mode()
2098 int set_endian(struct task_struct *tsk, unsigned int val) in set_endian() argument
2100 struct pt_regs *regs = tsk->thread.regs; in set_endian()
2119 int get_endian(struct task_struct *tsk, unsigned long adr) in get_endian() argument
2121 struct pt_regs *regs = tsk->thread.regs; in get_endian()
2142 int set_unalign_ctl(struct task_struct *tsk, unsigned int val) in set_unalign_ctl() argument
2144 tsk->thread.align_ctl = val; in set_unalign_ctl()
2148 int get_unalign_ctl(struct task_struct *tsk, unsigned long adr) in get_unalign_ctl() argument
2150 return put_user(tsk->thread.align_ctl, (unsigned int __user *)adr); in get_unalign_ctl()
2287 static bool empty_user_regs(struct pt_regs *regs, struct task_struct *tsk) in empty_user_regs() argument
2296 stack_page = (unsigned long)task_stack_page(tsk); in empty_user_regs()
2305 void __no_sanitize_address show_stack(struct task_struct *tsk, in show_stack() argument
2315 if (tsk == NULL) in show_stack()
2316 tsk = current; in show_stack()
2318 if (!try_get_task_stack(tsk)) in show_stack()
2323 if (tsk == current) in show_stack()
2326 sp = tsk->thread.ksp; in show_stack()
2332 if (!validate_sp(sp, tsk)) in show_stack()
2359 if (validate_sp_size(sp, tsk, STACK_SWITCH_FRAME_SIZE) in show_stack()
2370 if (!empty_user_regs(regs, tsk)) { in show_stack()
2381 put_task_stack(tsk); in show_stack()