|
@@ -55,7 +55,7 @@ void __noreturn cpu_idle(void)
|
|
|
while (1) {
|
|
|
tick_nohz_stop_sched_tick(1);
|
|
|
while (!need_resched()) {
|
|
|
-#ifdef CONFIG_SMTC_IDLE_HOOK_DEBUG
|
|
|
+#ifdef CONFIG_MIPS_MT_SMTC
|
|
|
extern void smtc_idle_loop_hook(void);
|
|
|
|
|
|
smtc_idle_loop_hook();
|
|
@@ -145,19 +145,18 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long usp,
|
|
|
*/
|
|
|
p->thread.cp0_status = read_c0_status() & ~(ST0_CU2|ST0_CU1);
|
|
|
childregs->cp0_status &= ~(ST0_CU2|ST0_CU1);
|
|
|
+
|
|
|
+#ifdef CONFIG_MIPS_MT_SMTC
|
|
|
+ /*
|
|
|
+ * SMTC restores TCStatus after Status, and the CU bits
|
|
|
+ * are aliased there.
|
|
|
+ */
|
|
|
+ childregs->cp0_tcstatus &= ~(ST0_CU2|ST0_CU1);
|
|
|
+#endif
|
|
|
clear_tsk_thread_flag(p, TIF_USEDFPU);
|
|
|
|
|
|
#ifdef CONFIG_MIPS_MT_FPAFF
|
|
|
clear_tsk_thread_flag(p, TIF_FPUBOUND);
|
|
|
-
|
|
|
- /*
|
|
|
- * FPU affinity support is cleaner if we track the
|
|
|
- * user-visible CPU affinity from the very beginning.
|
|
|
- * The generic cpus_allowed mask will already have
|
|
|
- * been copied from the parent before copy_thread
|
|
|
- * is invoked.
|
|
|
- */
|
|
|
- p->thread.user_cpus_allowed = p->cpus_allowed;
|
|
|
#endif /* CONFIG_MIPS_MT_FPAFF */
|
|
|
|
|
|
if (clone_flags & CLONE_SETTLS)
|