On Fri, 27 Feb 2015 13:28:01 +0000 Jan Kiszka <jan.kis...@siemens.com> wrote:
> Handy for obtaining the ID of the current CPU. We will have more use > cases. > > CC: Marc Zyngier <marc.zyng...@arm.com> > Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> > --- > arch/arm/cpu/armv7/sunxi/psci.S | 4 ++-- > arch/arm/include/asm/macro.h | 7 +++++++ > 2 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/arch/arm/cpu/armv7/sunxi/psci.S > b/arch/arm/cpu/armv7/sunxi/psci.S index 9e898f2..0523217 100644 > --- a/arch/arm/cpu/armv7/sunxi/psci.S > +++ b/arch/arm/cpu/armv7/sunxi/psci.S > @@ -19,6 +19,7 @@ > > #include <config.h> > #include <asm/gic.h> > +#include <asm/macro.h> > #include <asm/psci.h> > #include <asm/arch/cpu.h> > > @@ -315,8 +316,7 @@ psci_arch_init: > mcr p15, 0, r5, c1, c1, 0 @ Write SCR > isb > > - mrc p15, 0, r4, c0, c0, 5 @ MPIDR > - and r4, r4, #3 @ cpu number in cluster > + armv7_get_cpu_id r4 > mov r5, #0x400 @ 1kB of stack per CPU > mul r4, r4, r5 > > diff --git a/arch/arm/include/asm/macro.h > b/arch/arm/include/asm/macro.h index 1c8c425..0bc925a 100644 > --- a/arch/arm/include/asm/macro.h > +++ b/arch/arm/include/asm/macro.h > @@ -198,6 +198,13 @@ lr .req x30 > .endm > #endif > > +#else /* !CONFIG_ARM64 */ > + > +.macro armv7_get_cpu_id rn > + mrc p15, 0, \rn, c0, c0, 5 /* read MPIDR */ > + and \rn, \rn, #0xff /* return CPU ID > in cluster */ > +.endm > + How does this work in a multi-cluster situation? Or when you have sparse MPIDRs? Thanks, M. > #endif /* CONFIG_ARM64 */ > > #endif /* __ASSEMBLY__ */ -- Jazz is not dead. It just smells funny. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot