aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-sh/fpu.h
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2008-03-26 06:09:21 -0400
committerPaul Mundt <lethal@linux-sh.org>2008-03-26 06:09:21 -0400
commit138bed154eab2205b4ef93f02f5feb1edf6d8552 (patch)
tree7bb9cfc3996ef5ffe07e7552eff440f5c7833313 /include/asm-sh/fpu.h
parent9bbafce2eec190ef7e44b0eb1095ba17ce6ad3af (diff)
sh: Fix TIF_USEDFPU clearing under FPU emulation.
The unlazy_fpu() path calls in to save_fpu() if the task has TIF_USEDFPU set. save_fpu() being the crap API that it is has the side effect of clearing the flag itself, which presently doesn't happen if we're using FPU emulation. Fix this up for now, pending an overhaul in 2.6.26. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'include/asm-sh/fpu.h')
-rw-r--r--include/asm-sh/fpu.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/include/asm-sh/fpu.h b/include/asm-sh/fpu.h
index f89abf5920d8..91462fea1507 100644
--- a/include/asm-sh/fpu.h
+++ b/include/asm-sh/fpu.h
@@ -20,9 +20,14 @@ struct task_struct;
20 20
21extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs); 21extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs);
22#else 22#else
23
23#define release_fpu(regs) do { } while (0) 24#define release_fpu(regs) do { } while (0)
24#define grab_fpu(regs) do { } while (0) 25#define grab_fpu(regs) do { } while (0)
25#define save_fpu(tsk, regs) do { } while (0) 26
27static inline void save_fpu(struct task_struct *tsk, struct pt_regs *regs)
28{
29 clear_tsk_thread_flag(tsk, TIF_USEDFPU);
30}
26#endif 31#endif
27 32
28extern int do_fpu_inst(unsigned short, struct pt_regs *); 33extern int do_fpu_inst(unsigned short, struct pt_regs *);