sh: Fix TIF_USEDFPU clearing under FPU emulation.
authorPaul Mundt <lethal@linux-sh.org>
Wed, 26 Mar 2008 10:09:21 +0000 (19:09 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Wed, 26 Mar 2008 10:09:21 +0000 (19:09 +0900)
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>
include/asm-sh/fpu.h

index f89abf5920d808dbe545296b4b6b714c27e2ba5f..91462fea1507c69af30d42a8e2315e8730ced5b0 100644 (file)
@@ -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 *);