summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTkhai Kirill <tkhai@yandex.ru>2012-06-29 02:55:25 (GMT)
committerDavid S. Miller <davem@davemloft.net>2012-07-26 23:49:40 (GMT)
commit427f23cb3abc21c3784df8ae907c4c3a31d885d1 (patch)
tree6e903641bbc8f40c031bc2cfa32e2c319c77bae2
parenta0ce3ba03f6bd49459c6c40a03faf10b23831c1b (diff)
downloadlinux-427f23cb3abc21c3784df8ae907c4c3a31d885d1.tar.xz
sparc32, copy_thread: Clear TIF_USEDFPU flag of created task instead of current
FPU state is saved into task_struct of created task. Current task continues use of the state, so it needs TIF_USEDFPU flag is not cleared. Created task receives fresh FPU and cleared TIF_USEFPU flag is required for it. Signed-off-by: Kirill Tkhai <tkhai@yandex.ru> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--arch/sparc/kernel/process_32.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c
index cb36e82..14006d8 100644
--- a/arch/sparc/kernel/process_32.c
+++ b/arch/sparc/kernel/process_32.c
@@ -333,9 +333,6 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
put_psr(get_psr() | PSR_EF);
fpsave(&p->thread.float_regs[0], &p->thread.fsr,
&p->thread.fpqueue[0], &p->thread.fpqdepth);
-#ifdef CONFIG_SMP
- clear_thread_flag(TIF_USEDFPU);
-#endif
}
/*
@@ -413,6 +410,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
#ifdef CONFIG_SMP
/* FPU must be disabled on SMP. */
childregs->psr &= ~PSR_EF;
+ clear_tsk_thread_flag(p, TIF_USEDFPU);
#endif
/* Set the return value for the child. */