diff options
author | Tkhai Kirill <tkhai@yandex.ru> | 2012-06-28 22:55:25 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-07-26 19:49:40 -0400 |
commit | 427f23cb3abc21c3784df8ae907c4c3a31d885d1 (patch) | |
tree | 6e903641bbc8f40c031bc2cfa32e2c319c77bae2 /arch/sparc | |
parent | a0ce3ba03f6bd49459c6c40a03faf10b23831c1b (diff) |
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>
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/kernel/process_32.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index cb36e82dcd5d..14006d8aca28 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, | |||
333 | put_psr(get_psr() | PSR_EF); | 333 | put_psr(get_psr() | PSR_EF); |
334 | fpsave(&p->thread.float_regs[0], &p->thread.fsr, | 334 | fpsave(&p->thread.float_regs[0], &p->thread.fsr, |
335 | &p->thread.fpqueue[0], &p->thread.fpqdepth); | 335 | &p->thread.fpqueue[0], &p->thread.fpqdepth); |
336 | #ifdef CONFIG_SMP | ||
337 | clear_thread_flag(TIF_USEDFPU); | ||
338 | #endif | ||
339 | } | 336 | } |
340 | 337 | ||
341 | /* | 338 | /* |
@@ -413,6 +410,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, | |||
413 | #ifdef CONFIG_SMP | 410 | #ifdef CONFIG_SMP |
414 | /* FPU must be disabled on SMP. */ | 411 | /* FPU must be disabled on SMP. */ |
415 | childregs->psr &= ~PSR_EF; | 412 | childregs->psr &= ~PSR_EF; |
413 | clear_tsk_thread_flag(p, TIF_USEDFPU); | ||
416 | #endif | 414 | #endif |
417 | 415 | ||
418 | /* Set the return value for the child. */ | 416 | /* Set the return value for the child. */ |