Lines Matching refs:thread
160 struct thread_struct *thread = ¤t->thread; in load_user_fpu_regs() local
162 if (!thread->ufpu_flags) in load_user_fpu_regs()
164 load_fpu_state(&thread->ufpu, thread->ufpu_flags); in load_user_fpu_regs()
165 thread->ufpu_flags = 0; in load_user_fpu_regs()
168 static __always_inline void __save_user_fpu_regs(struct thread_struct *thread, int flags) in __save_user_fpu_regs() argument
170 save_fpu_state(&thread->ufpu, flags); in __save_user_fpu_regs()
171 __atomic_or(flags, &thread->ufpu_flags); in __save_user_fpu_regs()
176 struct thread_struct *thread = ¤t->thread; in save_user_fpu_regs() local
179 mask = __atomic_or(KERNEL_FPC | KERNEL_VXR, &thread->kfpu_flags); in save_user_fpu_regs()
180 flags = ~READ_ONCE(thread->ufpu_flags) & (KERNEL_FPC | KERNEL_VXR); in save_user_fpu_regs()
182 __save_user_fpu_regs(thread, flags); in save_user_fpu_regs()
184 WRITE_ONCE(thread->kfpu_flags, mask); in save_user_fpu_regs()
189 struct thread_struct *thread = ¤t->thread; in _kernel_fpu_begin() local
192 mask = __atomic_or(flags, &thread->kfpu_flags); in _kernel_fpu_begin()
194 uflags = READ_ONCE(thread->ufpu_flags); in _kernel_fpu_begin()
196 __save_user_fpu_regs(thread, ~uflags & flags); in _kernel_fpu_begin()
208 WRITE_ONCE(current->thread.kfpu_flags, mask); in _kernel_fpu_end()
247 static inline void save_kernel_fpu_regs(struct thread_struct *thread) in save_kernel_fpu_regs() argument
249 if (!thread->kfpu_flags) in save_kernel_fpu_regs()
251 save_fpu_state(&thread->kfpu, thread->kfpu_flags); in save_kernel_fpu_regs()
254 static inline void restore_kernel_fpu_regs(struct thread_struct *thread) in restore_kernel_fpu_regs() argument
256 if (!thread->kfpu_flags) in restore_kernel_fpu_regs()
258 load_fpu_state(&thread->kfpu, thread->kfpu_flags); in restore_kernel_fpu_regs()