aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorJon Loeliger <jdl@jdl.com>2006-06-17 18:52:44 -0400
committerPaul Mackerras <paulus@samba.org>2006-06-21 01:01:28 -0400
commitee0339f205d60375c5ce1653c0dc318c6ec72668 (patch)
tree8c4e46f6645224d88b26fed0a8c5ff031f233952 /arch
parent9674ed38d8e4a9ce15c61b4306ef803cad0e1dc0 (diff)
[POWERPC] Add starting of secondary 86xx CPUs.
Clear the high BATS during load_up_mmu if FTR_HAS_HIGH_BATS. Allow just a bit more time for secondary CPUs to phone home. Signed-off-by: Wei Zhang <Wei.Zhang@freescale.com> Signed-off-by: Haiying Wang <Haiying.Wang@freescale.com> Signed-off-by: Jon Loeliger <jdl@freescale.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/kernel/head_32.S14
-rw-r--r--arch/powerpc/kernel/smp.c2
-rw-r--r--arch/powerpc/mm/ppc_mmu_32.c4
3 files changed, 16 insertions, 4 deletions
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S
index a0579e859b21..b25b25902d15 100644
--- a/arch/powerpc/kernel/head_32.S
+++ b/arch/powerpc/kernel/head_32.S
@@ -973,6 +973,13 @@ __secondary_start_gemini:
973 b __secondary_start 973 b __secondary_start
974#endif /* CONFIG_GEMINI */ 974#endif /* CONFIG_GEMINI */
975 975
976 .globl __secondary_start_mpc86xx
977__secondary_start_mpc86xx:
978 mfspr r3, SPRN_PIR
979 stw r3, __secondary_hold_acknowledge@l(0)
980 mr r24, r3 /* cpu # */
981 b __secondary_start
982
976 .globl __secondary_start_pmac_0 983 .globl __secondary_start_pmac_0
977__secondary_start_pmac_0: 984__secondary_start_pmac_0:
978 /* NB the entries for cpus 0, 1, 2 must each occupy 8 bytes. */ 985 /* NB the entries for cpus 0, 1, 2 must each occupy 8 bytes. */
@@ -1088,7 +1095,12 @@ load_up_mmu:
1088 LOAD_BAT(1,r3,r4,r5) 1095 LOAD_BAT(1,r3,r4,r5)
1089 LOAD_BAT(2,r3,r4,r5) 1096 LOAD_BAT(2,r3,r4,r5)
1090 LOAD_BAT(3,r3,r4,r5) 1097 LOAD_BAT(3,r3,r4,r5)
1091 1098BEGIN_FTR_SECTION
1099 LOAD_BAT(4,r3,r4,r5)
1100 LOAD_BAT(5,r3,r4,r5)
1101 LOAD_BAT(6,r3,r4,r5)
1102 LOAD_BAT(7,r3,r4,r5)
1103END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_BATS)
1092 blr 1104 blr
1093 1105
1094/* 1106/*
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 530f7dba0bd2..c5d179d4f818 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -492,7 +492,7 @@ int __devinit __cpu_up(unsigned int cpu)
492 * -- Cort 492 * -- Cort
493 */ 493 */
494 if (system_state < SYSTEM_RUNNING) 494 if (system_state < SYSTEM_RUNNING)
495 for (c = 5000; c && !cpu_callin_map[cpu]; c--) 495 for (c = 50000; c && !cpu_callin_map[cpu]; c--)
496 udelay(100); 496 udelay(100);
497#ifdef CONFIG_HOTPLUG_CPU 497#ifdef CONFIG_HOTPLUG_CPU
498 else 498 else
diff --git a/arch/powerpc/mm/ppc_mmu_32.c b/arch/powerpc/mm/ppc_mmu_32.c
index ab5cd724b122..2ed43a493b31 100644
--- a/arch/powerpc/mm/ppc_mmu_32.c
+++ b/arch/powerpc/mm/ppc_mmu_32.c
@@ -43,13 +43,13 @@ unsigned long _SDR1;
43union ubat { /* BAT register values to be loaded */ 43union ubat { /* BAT register values to be loaded */
44 BAT bat; 44 BAT bat;
45 u32 word[2]; 45 u32 word[2];
46} BATS[4][2]; /* 4 pairs of IBAT, DBAT */ 46} BATS[8][2]; /* 8 pairs of IBAT, DBAT */
47 47
48struct batrange { /* stores address ranges mapped by BATs */ 48struct batrange { /* stores address ranges mapped by BATs */
49 unsigned long start; 49 unsigned long start;
50 unsigned long limit; 50 unsigned long limit;
51 unsigned long phys; 51 unsigned long phys;
52} bat_addrs[4]; 52} bat_addrs[8];
53 53
54/* 54/*
55 * Return PA for this VA if it is mapped by a BAT, or 0 55 * Return PA for this VA if it is mapped by a BAT, or 0