diff options
author | Kumar Gala <galak@kernel.crashing.org> | 2010-10-08 11:37:31 -0400 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2010-10-08 11:55:29 -0400 |
commit | 5b8544c38e6fde6968645afd46ff681492192b86 (patch) | |
tree | feb2028107bc870c82aa0e019fdf791058736362 /arch/powerpc | |
parent | 6b0cd00bc396daf5c2dcf17a8d82055335341f46 (diff) |
powerpc/ppc64e: Fix link problem when building ppc64e_defconfig
arch/powerpc/platforms/built-in.o:(.toc1+0x18): undefined reference to `__early_start'
This is due to the 85xx/smp.c not handling the 64-bit side properly. We
need to set the entry point for secondary cores on ppc64e to
generic_secondary_smp_init instead of __early_start that we due on ppc32.
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/platforms/85xx/smp.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c index a6b106557be4..bd38b6a240de 100644 --- a/arch/powerpc/platforms/85xx/smp.c +++ b/arch/powerpc/platforms/85xx/smp.c | |||
@@ -79,6 +79,7 @@ smp_85xx_kick_cpu(int nr) | |||
79 | local_irq_save(flags); | 79 | local_irq_save(flags); |
80 | 80 | ||
81 | out_be32(bptr_vaddr + BOOT_ENTRY_PIR, nr); | 81 | out_be32(bptr_vaddr + BOOT_ENTRY_PIR, nr); |
82 | #ifdef CONFIG_PPC32 | ||
82 | out_be32(bptr_vaddr + BOOT_ENTRY_ADDR_LOWER, __pa(__early_start)); | 83 | out_be32(bptr_vaddr + BOOT_ENTRY_ADDR_LOWER, __pa(__early_start)); |
83 | 84 | ||
84 | if (!ioremappable) | 85 | if (!ioremappable) |
@@ -88,6 +89,12 @@ smp_85xx_kick_cpu(int nr) | |||
88 | /* Wait a bit for the CPU to ack. */ | 89 | /* Wait a bit for the CPU to ack. */ |
89 | while ((__secondary_hold_acknowledge != nr) && (++n < 1000)) | 90 | while ((__secondary_hold_acknowledge != nr) && (++n < 1000)) |
90 | mdelay(1); | 91 | mdelay(1); |
92 | #else | ||
93 | out_be64((u64 *)(bptr_vaddr + BOOT_ENTRY_ADDR_UPPER), | ||
94 | __pa((u64)*((unsigned long long *) generic_secondary_smp_init))); | ||
95 | |||
96 | smp_generic_kick_cpu(nr); | ||
97 | #endif | ||
91 | 98 | ||
92 | local_irq_restore(flags); | 99 | local_irq_restore(flags); |
93 | 100 | ||