Merge git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86
[linux-2.6] / include / asm-sh / fpu.h
1 #ifndef __ASM_SH_FPU_H
2 #define __ASM_SH_FPU_H
3
4 #define SR_FD    0x00008000
5
6 #ifndef __ASSEMBLY__
7 #include <asm/ptrace.h>
8
9 #ifdef CONFIG_SH_FPU
10 static inline void release_fpu(struct pt_regs *regs)
11 {
12         regs->sr |= SR_FD;
13 }
14
15 static inline void grab_fpu(struct pt_regs *regs)
16 {
17         regs->sr &= ~SR_FD;
18 }
19
20 struct task_struct;
21
22 extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs);
23 #else
24 #define release_fpu(regs)       do { } while (0)
25 #define grab_fpu(regs)          do { } while (0)
26 #define save_fpu(tsk, regs)     do { } while (0)
27 #endif
28
29 extern int do_fpu_inst(unsigned short, struct pt_regs *);
30
31 #define unlazy_fpu(tsk, regs) do {                      \
32         if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) {   \
33                 save_fpu(tsk, regs);                    \
34         }                                               \
35 } while (0)
36
37 #define clear_fpu(tsk, regs) do {                               \
38         if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) {           \
39                 clear_tsk_thread_flag(tsk, TIF_USEDFPU);        \
40                 release_fpu(regs);                              \
41         }                                                       \
42 } while (0)
43
44 #endif /* __ASSEMBLY__ */
45
46 #endif /* __ASM_SH_FPU_H */