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>
This commit is contained in:
parent
a0ce3ba03f
commit
427f23cb3a
|
@ -333,9 +333,6 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
|
||||||
put_psr(get_psr() | PSR_EF);
|
put_psr(get_psr() | PSR_EF);
|
||||||
fpsave(&p->thread.float_regs[0], &p->thread.fsr,
|
fpsave(&p->thread.float_regs[0], &p->thread.fsr,
|
||||||
&p->thread.fpqueue[0], &p->thread.fpqdepth);
|
&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
|
#ifdef CONFIG_SMP
|
||||||
/* FPU must be disabled on SMP. */
|
/* FPU must be disabled on SMP. */
|
||||||
childregs->psr &= ~PSR_EF;
|
childregs->psr &= ~PSR_EF;
|
||||||
|
clear_tsk_thread_flag(p, TIF_USEDFPU);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Set the return value for the child. */
|
/* Set the return value for the child. */
|
||||||
|
|
Loading…
Reference in New Issue