diff options
Diffstat (limited to 'arch/blackfin/mach-bf561/smp.c')
-rw-r--r-- | arch/blackfin/mach-bf561/smp.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/arch/blackfin/mach-bf561/smp.c b/arch/blackfin/mach-bf561/smp.c index 1074a7ef81c7..5d68bf613b0b 100644 --- a/arch/blackfin/mach-bf561/smp.c +++ b/arch/blackfin/mach-bf561/smp.c | |||
@@ -30,18 +30,11 @@ void __init platform_init_cpus(void) | |||
30 | 30 | ||
31 | void __init platform_prepare_cpus(unsigned int max_cpus) | 31 | void __init platform_prepare_cpus(unsigned int max_cpus) |
32 | { | 32 | { |
33 | int len; | 33 | bfin_relocate_coreb_l1_mem(); |
34 | |||
35 | len = &coreb_trampoline_end - &coreb_trampoline_start + 1; | ||
36 | BUG_ON(len > L1_CODE_LENGTH); | ||
37 | |||
38 | dma_memcpy((void *)COREB_L1_CODE_START, &coreb_trampoline_start, len); | ||
39 | 34 | ||
40 | /* Both cores ought to be present on a bf561! */ | 35 | /* Both cores ought to be present on a bf561! */ |
41 | cpu_set(0, cpu_present_map); /* CoreA */ | 36 | cpu_set(0, cpu_present_map); /* CoreA */ |
42 | cpu_set(1, cpu_present_map); /* CoreB */ | 37 | cpu_set(1, cpu_present_map); /* CoreB */ |
43 | |||
44 | printk(KERN_INFO "CoreB bootstrap code to SRAM %p via DMA.\n", (void *)COREB_L1_CODE_START); | ||
45 | } | 38 | } |
46 | 39 | ||
47 | int __init setup_profiling_timer(unsigned int multiplier) /* not supported */ | 40 | int __init setup_profiling_timer(unsigned int multiplier) /* not supported */ |
@@ -161,9 +154,13 @@ void platform_clear_ipi(unsigned int cpu, int irq) | |||
161 | void __cpuinit bfin_local_timer_setup(void) | 154 | void __cpuinit bfin_local_timer_setup(void) |
162 | { | 155 | { |
163 | #if defined(CONFIG_TICKSOURCE_CORETMR) | 156 | #if defined(CONFIG_TICKSOURCE_CORETMR) |
157 | struct irq_chip *chip = get_irq_chip(IRQ_CORETMR); | ||
158 | struct irq_desc *desc = irq_to_desc(IRQ_CORETMR); | ||
159 | |||
164 | bfin_coretmr_init(); | 160 | bfin_coretmr_init(); |
165 | bfin_coretmr_clockevent_init(); | 161 | bfin_coretmr_clockevent_init(); |
166 | get_irq_chip(IRQ_CORETMR)->unmask(IRQ_CORETMR); | 162 | |
163 | chip->irq_unmask(&desc->irq_data); | ||
167 | #else | 164 | #else |
168 | /* Power down the core timer, just to play safe. */ | 165 | /* Power down the core timer, just to play safe. */ |
169 | bfin_write_TCNTL(0); | 166 | bfin_write_TCNTL(0); |