aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc64/kernel/pmac_smp.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2005-10-22 15:55:58 +1000
committerPaul Mackerras <paulus@samba.org>2005-10-22 15:55:58 +1000
commitef1a12817aebc313049d226f96eee86e4bcc94a3 (patch)
tree9c20807e70ef93a3e709e38464b627280bf67b36 /arch/ppc64/kernel/pmac_smp.c
parentppc64: Rearrange btext initialization for consistency with ppc32 (diff)
downloadlinux-dev-ef1a12817aebc313049d226f96eee86e4bcc94a3.tar.xz
linux-dev-ef1a12817aebc313049d226f96eee86e4bcc94a3.zip
ppc64: Simplify secondary CPU startup on powermacs
... for consistency with ppc32, and because this way is neater. Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to '')
-rw-r--r--arch/ppc64/kernel/pmac_smp.c21
1 files changed, 4 insertions, 17 deletions
diff --git a/arch/ppc64/kernel/pmac_smp.c b/arch/ppc64/kernel/pmac_smp.c
index 3a1683f5b07f..83c2f8dc1ec6 100644
--- a/arch/ppc64/kernel/pmac_smp.c
+++ b/arch/ppc64/kernel/pmac_smp.c
@@ -59,9 +59,7 @@
#define DBG(fmt...)
#endif
-extern void pmac_secondary_start_1(void);
-extern void pmac_secondary_start_2(void);
-extern void pmac_secondary_start_3(void);
+extern void __secondary_start_pmac_0(void);
extern struct smp_ops_t *smp_ops;
@@ -236,7 +234,7 @@ static int __init smp_core99_probe(void)
static void __init smp_core99_kick_cpu(int nr)
{
- int save_vector, j;
+ unsigned int save_vector, j;
unsigned long new_vector;
unsigned long flags;
volatile unsigned int *vector
@@ -253,20 +251,9 @@ static void __init smp_core99_kick_cpu(int nr)
save_vector = *vector;
/* Setup fake reset vector that does
- * b .pmac_secondary_start - KERNELBASE
+ * b __secondary_start_pmac_0 + nr*8 - KERNELBASE
*/
- switch(nr) {
- case 1:
- new_vector = (unsigned long)pmac_secondary_start_1;
- break;
- case 2:
- new_vector = (unsigned long)pmac_secondary_start_2;
- break;
- case 3:
- default:
- new_vector = (unsigned long)pmac_secondary_start_3;
- break;
- }
+ new_vector = (unsigned long) __secondary_start_pmac_0 + nr * 8;
*vector = 0x48000002 + (new_vector - KERNELBASE);
/* flush data cache and inval instruction cache */