On 2015-02-15 03:01, Chen-Yu Tsai wrote: > Hi, > > On Sun, Feb 15, 2015 at 5:28 AM, Jan Kiszka <jan.kis...@web.de> wrote: >> From: Jan Kiszka <jan.kis...@siemens.com> >> >> _sunxi_cpu_entry can be converted completely into a reusable >> psci_cpu_entry. Tegra124 will use it as well. >> >> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> >> --- >> arch/arm/cpu/armv7/psci.S | 19 +++++++++++++++++++ >> arch/arm/cpu/armv7/sunxi/psci.S | 21 ++------------------- >> 2 files changed, 21 insertions(+), 19 deletions(-) >> >> diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S >> index d688607..e916d71 100644 >> --- a/arch/arm/cpu/armv7/psci.S >> +++ b/arch/arm/cpu/armv7/psci.S >> @@ -170,4 +170,23 @@ ENTRY(psci_cpu_off_common) >> bx lr >> ENDPROC(psci_cpu_off_common) >> >> +ENTRY(psci_cpu_entry) >> + @ Set SMP bit >> + mrc p15, 0, r0, c1, c0, 1 @ ACTLR >> + orr r0, r0, #(1 << 6) @ Set SMP bit >> + mcr p15, 0, r0, c1, c0, 1 @ ACTLR >> + isb >> + >> + bl _nonsec_init >> + bl psci_arch_init >> + >> + adr r0, _psci_target_pc >> + ldr r0, [r0] >> + b _do_nonsec_entry >> +ENDPROC(psci_cpu_entry) >> + >> +.globl _psci_target_pc >> +_psci_target_pc: >> + .word 0 > > The sunxi version didn't have a per-core target_pc variable. > It is still the case here. Is this the correct way to implement > it? I see per-core storage of this in some of the kernel's smp > ops. > > On sunxi it works because the only platform using it only has > one secondary core. >
With homogeneous SMP, it probably works as well because reset vectors may not differ across the cores. But this remains a valid point. I'm considering to push this variable to the top of the per-CPU stack. Calculating the stack position is actually another function to factor out. Thanks, Jan
signature.asc
Description: OpenPGP digital signature
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot