[PATCH 4/5] powerpc/85xx: use physical cpu from device tree
Matthew McClintock
msm at freescale.com
Wed Oct 26 09:54:05 EST 2011
Currently, we assume the first CPU to come up is the boot cpu. Instead
we can use the boot_cpu_phys from the device tree.
Signed-off-by: Matthew McClintock <msm at freescale.com>
---
arch/powerpc/kernel/asm-offsets.c | 4 ++++
arch/powerpc/kernel/head_fsl_booke.S | 9 ++-------
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c
index 536ffa8..264f8ad 100644
--- a/arch/powerpc/kernel/asm-offsets.c
+++ b/arch/powerpc/kernel/asm-offsets.c
@@ -28,6 +28,7 @@
#include <linux/hardirq.h>
#endif
#include <linux/kbuild.h>
+#include <linux/of_fdt.h>
#include <asm/io.h>
#include <asm/page.h>
@@ -619,5 +620,8 @@ int main(void)
DEFINE(PACA_OPAL_MC_EVT, offsetof(struct paca_struct, opal_mc_evt));
#endif
+ DEFINE(DT_BOOTCPU, offsetof(struct boot_param_header,
+ boot_cpuid_phys));
+
return 0;
}
diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S
index 9f5d210..eb28ade 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -87,6 +87,7 @@ _ENTRY(_start);
li r25,0 /* phys kernel start (low) */
li r24,0 /* CPU number */
li r23,0 /* phys kernel start (high) */
+ lwz r22,DT_BOOTCPU(r3) /* boot_cpuid_phys */
/* We try to not make any assumptions about how the boot loader
* setup or used the TLBs. We invalidate all mappings from the
@@ -166,11 +167,8 @@ _ENTRY(__early_start)
/* Check to see if we're the second processor, and jump
* to the secondary_start code if so
*/
- lis r24, boot_cpuid at h
- ori r24, r24, boot_cpuid at l
- lwz r24, 0(r24)
- cmpwi r24, -1
mfspr r24,SPRN_PIR
+ cmpw r22,r24
bne __secondary_start
#endif
@@ -192,9 +190,6 @@ _ENTRY(__early_start)
li r0,0
stwu r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
- rlwinm r22,r1,0,0,31-THREAD_SHIFT /* current thread_info */
- stw r24, TI_CPU(r22)
-
bl early_init
#ifdef CONFIG_RELOCATABLE
--
1.7.6.1
More information about the Linuxppc-dev
mailing list