--- zzzz-none-000/linux-3.10.107/arch/arm/mach-msm/headsmp.S 2017-06-27 09:49:32.000000000 +0000 +++ vr9-7490-729/linux-3.10.107/arch/arm/mach-msm/headsmp.S 2021-11-10 11:53:52.000000000 +0000 @@ -1,8 +1,7 @@ /* - * linux/arch/arm/mach-realview/headsmp.S - * * Copyright (c) 2003 ARM Limited * All Rights Reserved + * Copyright (c) 2010, 2012 The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -11,22 +10,25 @@ #include #include - __CPUINIT +__CPUINIT /* * MSM specific entry point for secondary CPUs. This provides * a "holding pen" into which all secondary cores are held until we're * ready for them to initialise. + * + * This is executing in physical space with cache's off. */ ENTRY(msm_secondary_startup) - mrc p15, 0, r0, c0, c0, 5 - and r0, r0, #15 - adr r4, 1f - ldmia r4, {r5, r6} - sub r4, r4, r5 - add r6, r6, r4 -pen: ldr r7, [r6] - cmp r7, r0 + mrc p15, 0, r0, c0, c0, 5 @ MPIDR + and r0, r0, #15 @ What CPU am I + adr r4, 1f @ address of + ldmia r4, {r5, r6} @ load curr addr and pen_rel addr + sub r4, r4, r5 @ determine virtual/phys offsets + add r6, r6, r4 @ apply +pen: + ldr r7, [r6] @ pen_rel has cpu to remove from reset + cmp r7, r0 @ are we lucky? bne pen /* @@ -36,6 +38,5 @@ b secondary_startup ENDPROC(msm_secondary_startup) - .align 1: .long . .long pen_release