diff options
author | Arnd Bergmann <arnd@arndb.de> | 2019-09-03 23:09:32 +0200 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2019-09-03 23:09:33 +0200 |
commit | e8606cd4812485b3fb93b9a9484d00bd31f1ab9e (patch) | |
tree | 58fcb50112a6814d63ed9cfbd46e222e03100b89 /arch/arm | |
parent | a3a2902fb86e40a991bfd4bb84328df50b700541 (diff) | |
parent | b7005d4ef4f3aa2dc24019ffba03a322557ac43d (diff) | |
download | linux-e8606cd4812485b3fb93b9a9484d00bd31f1ab9e.tar.bz2 |
Merge tag 'zynq-soc-for-v5.4' of https://github.com/Xilinx/linux-xlnx into arm/soc
ARM: Xilinx Zynq SoC patches for v5.4
- Add support for SMP in thumb mode
- Fix SMP trampoline code when FORTIFY_SOURCE is enabled
* tag 'zynq-soc-for-v5.4' of https://github.com/Xilinx/linux-xlnx:
ARM: zynq: Use memcpy_toio instead of memcpy on smp bring-up
ARM: zynq: Support smp in thumb mode
Link: https://lore.kernel.org/r/8e00ba70-9403-4bf7-2870-a94758e37346@monstr.eu
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/mach-zynq/headsmp.S | 2 | ||||
-rw-r--r-- | arch/arm/mach-zynq/platsmp.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/arch/arm/mach-zynq/headsmp.S b/arch/arm/mach-zynq/headsmp.S index ab85003cf9ad..3449e0d1f990 100644 --- a/arch/arm/mach-zynq/headsmp.S +++ b/arch/arm/mach-zynq/headsmp.S @@ -7,6 +7,8 @@ #include <linux/init.h> #include <asm/assembler.h> + .arm + ENTRY(zynq_secondary_trampoline) ARM_BE8(setend be) @ ensure we are in BE8 mode ldr r0, zynq_secondary_trampoline_jump diff --git a/arch/arm/mach-zynq/platsmp.c b/arch/arm/mach-zynq/platsmp.c index a7cfe07156f4..a10085be9073 100644 --- a/arch/arm/mach-zynq/platsmp.c +++ b/arch/arm/mach-zynq/platsmp.c @@ -57,7 +57,7 @@ int zynq_cpun_start(u32 address, int cpu) * 0x4: Jump by mov instruction * 0x8: Jumping address */ - memcpy((__force void *)zero, &zynq_secondary_trampoline, + memcpy_toio(zero, &zynq_secondary_trampoline, trampoline_size); writel(address, zero + trampoline_size); @@ -81,7 +81,7 @@ EXPORT_SYMBOL(zynq_cpun_start); static int zynq_boot_secondary(unsigned int cpu, struct task_struct *idle) { - return zynq_cpun_start(__pa_symbol(secondary_startup), cpu); + return zynq_cpun_start(__pa_symbol(secondary_startup_arm), cpu); } /* |