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 <m...@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@h - ori r24, r24, boot_cpuid@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 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev