summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2019-09-03 23:09:32 +0200
committerArnd Bergmann <arnd@arndb.de>2019-09-03 23:09:33 +0200
commite8606cd4812485b3fb93b9a9484d00bd31f1ab9e (patch)
tree58fcb50112a6814d63ed9cfbd46e222e03100b89 /arch/arm
parenta3a2902fb86e40a991bfd4bb84328df50b700541 (diff)
parentb7005d4ef4f3aa2dc24019ffba03a322557ac43d (diff)
downloadlinux-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.S2
-rw-r--r--arch/arm/mach-zynq/platsmp.c4
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);
}
/*