diff options
author | Matthew McClintock <msm@freescale.com> | 2010-08-31 19:24:45 -0400 |
---|---|---|
committer | Kumar Gala <galak@kernel.crashing.org> | 2010-10-14 01:52:58 -0400 |
commit | 2ed38b23597284cc96a97e295cb145a6202dfcd4 (patch) | |
tree | ca1c44205682e7fbd8138617031d6fb5933e399f | |
parent | f7a07fd9617140c6111de82400ba1bad3162fb85 (diff) |
powerpc/fsl_booke: Add support to boot from core other than 0
First we check to see if we are the first core booting up. This
is accomplished by comparing the boot_cpuid with -1, if it is we
assume this is the first core coming up.
Secondly, we need to update the initial thread info structure
to reflect the actual cpu we are running on otherwise
smp_processor_id() and related functions will return the default
initialization value of the struct or 0.
Signed-off-by: Matthew McClintock <msm@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
-rw-r--r-- | arch/powerpc/kernel/head_fsl_booke.S | 10 | ||||
-rw-r--r-- | arch/powerpc/kernel/setup_32.c | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S index 4faeba247854..529b817f473b 100644 --- a/arch/powerpc/kernel/head_fsl_booke.S +++ b/arch/powerpc/kernel/head_fsl_booke.S | |||
@@ -152,8 +152,11 @@ _ENTRY(__early_start) | |||
152 | /* Check to see if we're the second processor, and jump | 152 | /* Check to see if we're the second processor, and jump |
153 | * to the secondary_start code if so | 153 | * to the secondary_start code if so |
154 | */ | 154 | */ |
155 | mfspr r24,SPRN_PIR | 155 | lis r24, boot_cpuid@h |
156 | cmpwi r24,0 | 156 | ori r24, r24, boot_cpuid@l |
157 | lwz r24, 0(r24) | ||
158 | cmpwi r24, -1 | ||
159 | mfspr r24,SPRN_PIR | ||
157 | bne __secondary_start | 160 | bne __secondary_start |
158 | #endif | 161 | #endif |
159 | 162 | ||
@@ -175,6 +178,9 @@ _ENTRY(__early_start) | |||
175 | li r0,0 | 178 | li r0,0 |
176 | stwu r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1) | 179 | stwu r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1) |
177 | 180 | ||
181 | rlwinm r22,r1,0,0,31-THREAD_SHIFT /* current thread_info */ | ||
182 | stw r24, TI_CPU(r22) | ||
183 | |||
178 | bl early_init | 184 | bl early_init |
179 | 185 | ||
180 | #ifdef CONFIG_RELOCATABLE | 186 | #ifdef CONFIG_RELOCATABLE |
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c index 93666f9cabf1..8da1632f9fe7 100644 --- a/arch/powerpc/kernel/setup_32.c +++ b/arch/powerpc/kernel/setup_32.c | |||
@@ -46,7 +46,7 @@ | |||
46 | 46 | ||
47 | extern void bootx_init(unsigned long r4, unsigned long phys); | 47 | extern void bootx_init(unsigned long r4, unsigned long phys); |
48 | 48 | ||
49 | int boot_cpuid; | 49 | int boot_cpuid = -1; |
50 | EXPORT_SYMBOL_GPL(boot_cpuid); | 50 | EXPORT_SYMBOL_GPL(boot_cpuid); |
51 | int boot_cpuid_phys; | 51 | int boot_cpuid_phys; |
52 | 52 | ||