diff options
Diffstat (limited to 'arch/sh/kernel/cpu/init.c')
-rw-r--r-- | arch/sh/kernel/cpu/init.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index fdc245b7b043..c217c4bf0085 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/cache.h> | 22 | #include <asm/cache.h> |
23 | #include <asm/io.h> | 23 | #include <asm/io.h> |
24 | #include <asm/ubc.h> | 24 | #include <asm/ubc.h> |
25 | #include <asm/smp.h> | ||
25 | 26 | ||
26 | /* | 27 | /* |
27 | * Generic wrapper for command line arguments to disable on-chip | 28 | * Generic wrapper for command line arguments to disable on-chip |
@@ -216,8 +217,11 @@ static void __init dsp_init(void) | |||
216 | * Each processor family is still responsible for doing its own probing | 217 | * Each processor family is still responsible for doing its own probing |
217 | * and cache configuration in detect_cpu_and_cache_system(). | 218 | * and cache configuration in detect_cpu_and_cache_system(). |
218 | */ | 219 | */ |
219 | asmlinkage void __init sh_cpu_init(void) | 220 | |
221 | asmlinkage void __cpuinit sh_cpu_init(void) | ||
220 | { | 222 | { |
223 | current_thread_info()->cpu = hard_smp_processor_id(); | ||
224 | |||
221 | /* First, probe the CPU */ | 225 | /* First, probe the CPU */ |
222 | detect_cpu_and_cache_system(); | 226 | detect_cpu_and_cache_system(); |
223 | 227 | ||
@@ -227,9 +231,10 @@ asmlinkage void __init sh_cpu_init(void) | |||
227 | /* Init the cache */ | 231 | /* Init the cache */ |
228 | cache_init(); | 232 | cache_init(); |
229 | 233 | ||
230 | shm_align_mask = max_t(unsigned long, | 234 | if (raw_smp_processor_id() == 0) |
231 | current_cpu_data.dcache.way_size - 1, | 235 | shm_align_mask = max_t(unsigned long, |
232 | PAGE_SIZE - 1); | 236 | current_cpu_data.dcache.way_size - 1, |
237 | PAGE_SIZE - 1); | ||
233 | 238 | ||
234 | /* Disable the FPU */ | 239 | /* Disable the FPU */ |
235 | if (fpu_disabled) { | 240 | if (fpu_disabled) { |
@@ -268,6 +273,7 @@ asmlinkage void __init sh_cpu_init(void) | |||
268 | * like PTRACE_SINGLESTEP or doing hardware watchpoints in GDB. So .. | 273 | * like PTRACE_SINGLESTEP or doing hardware watchpoints in GDB. So .. |
269 | * we wake it up and hope that all is well. | 274 | * we wake it up and hope that all is well. |
270 | */ | 275 | */ |
271 | ubc_wakeup(); | 276 | if (raw_smp_processor_id() == 0) |
277 | ubc_wakeup(); | ||
272 | speculative_execution_init(); | 278 | speculative_execution_init(); |
273 | } | 279 | } |