aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2008-03-26 19:09:21 +0900
committerPaul Mundt <lethal@linux-sh.org>2008-03-26 19:09:21 +0900
commit138bed154eab2205b4ef93f02f5feb1edf6d8552 (patch)
tree7bb9cfc3996ef5ffe07e7552eff440f5c7833313
parent9bbafce2eec190ef7e44b0eb1095ba17ce6ad3af (diff)
downloadkernel_samsung_tuna-138bed154eab2205b4ef93f02f5feb1edf6d8552.zip
kernel_samsung_tuna-138bed154eab2205b4ef93f02f5feb1edf6d8552.tar.gz
kernel_samsung_tuna-138bed154eab2205b4ef93f02f5feb1edf6d8552.tar.bz2
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>
-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 f89abf5..91462fe 100644
--- a/include/asm-sh/fpu.h
+++ b/include/asm-sh/fpu.h
@@ -20,9 +20,14 @@ struct task_struct;
extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs);
#else
+
#define release_fpu(regs) do { } while (0)
#define grab_fpu(regs) do { } while (0)
-#define save_fpu(tsk, regs) do { } while (0)
+
+static inline void save_fpu(struct task_struct *tsk, struct pt_regs *regs)
+{
+ clear_tsk_thread_flag(tsk, TIF_USEDFPU);
+}
#endif
extern int do_fpu_inst(unsigned short, struct pt_regs *);