aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/sh/Kconfig1
-rw-r--r--arch/sh/include/asm/processor.h4
-rw-r--r--arch/sh/kernel/smp.c14
3 files changed, 2 insertions, 17 deletions
diff --git a/arch/sh/Kconfig b/arch/sh/Kconfig
index ff9e033ce626..244cfd0dbb7b 100644
--- a/arch/sh/Kconfig
+++ b/arch/sh/Kconfig
@@ -28,6 +28,7 @@ config SUPERH
28 select RTC_LIB 28 select RTC_LIB
29 select GENERIC_ATOMIC64 29 select GENERIC_ATOMIC64
30 select GENERIC_IRQ_SHOW 30 select GENERIC_IRQ_SHOW
31 select GENERIC_SMP_IDLE_THREAD
31 help 32 help
32 The SuperH is a RISC processor targeted for use in embedded systems 33 The SuperH is a RISC processor targeted for use in embedded systems
33 and consumer electronics; it was also used in the Sega Dreamcast 34 and consumer electronics; it was also used in the Sega Dreamcast
diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h
index a229c393826a..6d87912415a7 100644
--- a/arch/sh/include/asm/processor.h
+++ b/arch/sh/include/asm/processor.h
@@ -85,10 +85,6 @@ struct sh_cpuinfo {
85 struct tlb_info itlb; 85 struct tlb_info itlb;
86 struct tlb_info dtlb; 86 struct tlb_info dtlb;
87 87
88#ifdef CONFIG_SMP
89 struct task_struct *idle;
90#endif
91
92 unsigned int phys_bits; 88 unsigned int phys_bits;
93 unsigned long flags; 89 unsigned long flags;
94} __attribute__ ((aligned(L1_CACHE_BYTES))); 90} __attribute__ ((aligned(L1_CACHE_BYTES)));
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c
index ebb76e2a748b..b86e9ca79455 100644
--- a/arch/sh/kernel/smp.c
+++ b/arch/sh/kernel/smp.c
@@ -220,22 +220,10 @@ extern struct {
220 void *thread_info; 220 void *thread_info;
221} stack_start; 221} stack_start;
222 222
223int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tidle) 223int __cpuinit __cpu_up(unsigned int cpu, struct task_struct *tsk)
224{ 224{
225 struct task_struct *tsk;
226 unsigned long timeout; 225 unsigned long timeout;
227 226
228 tsk = cpu_data[cpu].idle;
229 if (!tsk) {
230 tsk = fork_idle(cpu);
231 if (IS_ERR(tsk)) {
232 pr_err("Failed forking idle task for cpu %d\n", cpu);
233 return PTR_ERR(tsk);
234 }
235
236 cpu_data[cpu].idle = tsk;
237 }
238
239 per_cpu(cpu_state, cpu) = CPU_UP_PREPARE; 227 per_cpu(cpu_state, cpu) = CPU_UP_PREPARE;
240 228
241 /* Fill in data in head.S for secondary cpus */ 229 /* Fill in data in head.S for secondary cpus */