Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/sh/include/asm/fpu.h
15125 views
1
#ifndef __ASM_SH_FPU_H
2
#define __ASM_SH_FPU_H
3
4
#ifndef __ASSEMBLY__
5
6
struct task_struct;
7
8
#ifdef CONFIG_SH_FPU
9
static inline void release_fpu(struct pt_regs *regs)
10
{
11
regs->sr |= SR_FD;
12
}
13
14
static inline void grab_fpu(struct pt_regs *regs)
15
{
16
regs->sr &= ~SR_FD;
17
}
18
19
extern void save_fpu(struct task_struct *__tsk);
20
extern void restore_fpu(struct task_struct *__tsk);
21
extern void fpu_state_restore(struct pt_regs *regs);
22
extern void __fpu_state_restore(void);
23
#else
24
#define save_fpu(tsk) do { } while (0)
25
#define restore_fpu(tsk) do { } while (0)
26
#define release_fpu(regs) do { } while (0)
27
#define grab_fpu(regs) do { } while (0)
28
#define fpu_state_restore(regs) do { } while (0)
29
#define __fpu_state_restore(regs) do { } while (0)
30
#endif
31
32
struct user_regset;
33
34
extern int do_fpu_inst(unsigned short, struct pt_regs *);
35
extern int init_fpu(struct task_struct *);
36
37
extern int fpregs_get(struct task_struct *target,
38
const struct user_regset *regset,
39
unsigned int pos, unsigned int count,
40
void *kbuf, void __user *ubuf);
41
42
static inline void __unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs)
43
{
44
if (task_thread_info(tsk)->status & TS_USEDFPU) {
45
task_thread_info(tsk)->status &= ~TS_USEDFPU;
46
save_fpu(tsk);
47
release_fpu(regs);
48
} else
49
tsk->fpu_counter = 0;
50
}
51
52
static inline void unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs)
53
{
54
preempt_disable();
55
__unlazy_fpu(tsk, regs);
56
preempt_enable();
57
}
58
59
static inline void clear_fpu(struct task_struct *tsk, struct pt_regs *regs)
60
{
61
preempt_disable();
62
if (task_thread_info(tsk)->status & TS_USEDFPU) {
63
task_thread_info(tsk)->status &= ~TS_USEDFPU;
64
release_fpu(regs);
65
}
66
preempt_enable();
67
}
68
69
#endif /* __ASSEMBLY__ */
70
71
#endif /* __ASM_SH_FPU_H */
72
73