Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.15 74 lines 1.8 kB view raw
1/* SPDX-License-Identifier: GPL-2.0 */ 2#ifndef __ASM_SH_FPU_H 3#define __ASM_SH_FPU_H 4 5#ifndef __ASSEMBLY__ 6 7#include <asm/ptrace.h> 8 9struct task_struct; 10 11#ifdef CONFIG_SH_FPU 12static inline void release_fpu(struct pt_regs *regs) 13{ 14 regs->sr |= SR_FD; 15} 16 17static inline void grab_fpu(struct pt_regs *regs) 18{ 19 regs->sr &= ~SR_FD; 20} 21 22extern void save_fpu(struct task_struct *__tsk); 23extern void restore_fpu(struct task_struct *__tsk); 24extern void fpu_state_restore(struct pt_regs *regs); 25extern void __fpu_state_restore(void); 26#else 27#define save_fpu(tsk) do { } while (0) 28#define restore_fpu(tsk) do { } while (0) 29#define release_fpu(regs) do { } while (0) 30#define grab_fpu(regs) do { } while (0) 31#define fpu_state_restore(regs) do { } while (0) 32#define __fpu_state_restore(regs) do { } while (0) 33#endif 34 35struct user_regset; 36 37extern int do_fpu_inst(unsigned short, struct pt_regs *); 38extern int init_fpu(struct task_struct *); 39 40extern int fpregs_get(struct task_struct *target, 41 const struct user_regset *regset, 42 unsigned int pos, unsigned int count, 43 void *kbuf, void __user *ubuf); 44 45static inline void __unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs) 46{ 47 if (task_thread_info(tsk)->status & TS_USEDFPU) { 48 task_thread_info(tsk)->status &= ~TS_USEDFPU; 49 save_fpu(tsk); 50 release_fpu(regs); 51 } else 52 tsk->thread.fpu_counter = 0; 53} 54 55static inline void unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs) 56{ 57 preempt_disable(); 58 __unlazy_fpu(tsk, regs); 59 preempt_enable(); 60} 61 62static inline void clear_fpu(struct task_struct *tsk, struct pt_regs *regs) 63{ 64 preempt_disable(); 65 if (task_thread_info(tsk)->status & TS_USEDFPU) { 66 task_thread_info(tsk)->status &= ~TS_USEDFPU; 67 release_fpu(regs); 68 } 69 preempt_enable(); 70} 71 72#endif /* __ASSEMBLY__ */ 73 74#endif /* __ASM_SH_FPU_H */