Commit ee0339f2 authored by Jon Loeliger's avatar Jon Loeliger Committed by Paul Mackerras

[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: default avatarWei Zhang <Wei.Zhang@freescale.com>
Signed-off-by: default avatarHaiying Wang <Haiying.Wang@freescale.com>
Signed-off-by: default avatarJon Loeliger <jdl@freescale.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 9674ed38
...@@ -973,6 +973,13 @@ __secondary_start_gemini: ...@@ -973,6 +973,13 @@ __secondary_start_gemini:
b __secondary_start b __secondary_start
#endif /* CONFIG_GEMINI */ #endif /* CONFIG_GEMINI */
.globl __secondary_start_mpc86xx
__secondary_start_mpc86xx:
mfspr r3, SPRN_PIR
stw r3, __secondary_hold_acknowledge@l(0)
mr r24, r3 /* cpu # */
b __secondary_start
.globl __secondary_start_pmac_0 .globl __secondary_start_pmac_0
__secondary_start_pmac_0: __secondary_start_pmac_0:
/* NB the entries for cpus 0, 1, 2 must each occupy 8 bytes. */ /* NB the entries for cpus 0, 1, 2 must each occupy 8 bytes. */
...@@ -1088,7 +1095,12 @@ load_up_mmu: ...@@ -1088,7 +1095,12 @@ load_up_mmu:
LOAD_BAT(1,r3,r4,r5) LOAD_BAT(1,r3,r4,r5)
LOAD_BAT(2,r3,r4,r5) LOAD_BAT(2,r3,r4,r5)
LOAD_BAT(3,r3,r4,r5) LOAD_BAT(3,r3,r4,r5)
BEGIN_FTR_SECTION
LOAD_BAT(4,r3,r4,r5)
LOAD_BAT(5,r3,r4,r5)
LOAD_BAT(6,r3,r4,r5)
LOAD_BAT(7,r3,r4,r5)
END_FTR_SECTION_IFSET(CPU_FTR_HAS_HIGH_BATS)
blr blr
/* /*
......
...@@ -492,7 +492,7 @@ int __devinit __cpu_up(unsigned int cpu) ...@@ -492,7 +492,7 @@ int __devinit __cpu_up(unsigned int cpu)
* -- Cort * -- Cort
*/ */
if (system_state < SYSTEM_RUNNING) if (system_state < SYSTEM_RUNNING)
for (c = 5000; c && !cpu_callin_map[cpu]; c--) for (c = 50000; c && !cpu_callin_map[cpu]; c--)
udelay(100); udelay(100);
#ifdef CONFIG_HOTPLUG_CPU #ifdef CONFIG_HOTPLUG_CPU
else else
......
...@@ -43,13 +43,13 @@ unsigned long _SDR1; ...@@ -43,13 +43,13 @@ unsigned long _SDR1;
union ubat { /* BAT register values to be loaded */ union ubat { /* BAT register values to be loaded */
BAT bat; BAT bat;
u32 word[2]; u32 word[2];
} BATS[4][2]; /* 4 pairs of IBAT, DBAT */ } BATS[8][2]; /* 8 pairs of IBAT, DBAT */
struct batrange { /* stores address ranges mapped by BATs */ struct batrange { /* stores address ranges mapped by BATs */
unsigned long start; unsigned long start;
unsigned long limit; unsigned long limit;
unsigned long phys; unsigned long phys;
} bat_addrs[4]; } bat_addrs[8];
/* /*
* Return PA for this VA if it is mapped by a BAT, or 0 * Return PA for this VA if it is mapped by a BAT, or 0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment