summaryrefslogtreecommitdiff
path: root/arch/arm/kernel/head.S
diff options
context:
space:
mode:
authorHarith G <harith.g@alifsemi.com>2024-09-18 06:57:53 +0100
committerRussell King (Oracle) <rmk+kernel@armlinux.org.uk>2024-11-12 16:38:47 +0000
commit9e9b0cf9319b4db143014477b0bc4b39894248f1 (patch)
tree8ff9b5e969b58ffc963010d9419ac1adb797f3e2 /arch/arm/kernel/head.S
parented6cbe6e5563452f305e89c15846820f2874e431 (diff)
downloadlinux-9e9b0cf9319b4db143014477b0bc4b39894248f1.tar.gz
linux-9e9b0cf9319b4db143014477b0bc4b39894248f1.tar.bz2
linux-9e9b0cf9319b4db143014477b0bc4b39894248f1.zip
ARM: 9420/1: smp: Fix SMP for xip kernels
Fix the physical address calculation of the following to get smp working on xip kernels. - secondary_data needed for secondary cpu bootup. - secondary_startup address passed through psci. - identity mapped code region needed for enabling mmu for secondary cpus. Signed-off-by: Harith George <harith.g@alifsemi.com> Reviewed-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'arch/arm/kernel/head.S')
-rw-r--r--arch/arm/kernel/head.S4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S
index 28873cda464f..f22c50d4bd41 100644
--- a/arch/arm/kernel/head.S
+++ b/arch/arm/kernel/head.S
@@ -411,7 +411,11 @@ ENTRY(secondary_startup)
/*
* Use the page tables supplied from __cpu_up.
*/
+#ifdef CONFIG_XIP_KERNEL
+ ldr r3, =(secondary_data + PLAT_PHYS_OFFSET - PAGE_OFFSET)
+#else
adr_l r3, secondary_data
+#endif
mov_l r12, __secondary_switched
ldrd r4, r5, [r3, #0] @ get secondary_data.pgdir
ARM_BE8(eor r4, r4, r5) @ Swap r5 and r4 in BE: