diff options
author | Olof Johansson <olof@lixom.net> | 2018-07-15 00:45:51 +0300 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2018-07-15 00:45:51 +0300 |
commit | ce8403d455430afb2317757bb755a0f27a2799db (patch) | |
tree | d9a4b82104181ae7b781e84621bf1ac8333770db | |
parent | edc07c0012c1b9a40f6dfd44d90f71717d97df50 (diff) | |
parent | 4ea7bdc6b5b33427bbd3f41c333e21c1825462a3 (diff) | |
download | linux-ce8403d455430afb2317757bb755a0f27a2799db.tar.xz |
Merge tag 'tegra-for-4.19-firmware' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux into next/soc
firmware: tegra: Changes for v4.19-rc1
This contains a single fix for the Trusted Foundations firmware
implementation, used on some Tegra20 and Tegra30 platforms.
* tag 'tegra-for-4.19-firmware' of git://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux:
ARM: trusted_foundations: do not use naked function
Signed-off-by: Olof Johansson <olof@lixom.net>
-rw-r--r-- | arch/arm/firmware/trusted_foundations.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/arch/arm/firmware/trusted_foundations.c b/arch/arm/firmware/trusted_foundations.c index 3fb1b5a1dce9..689e6565abfc 100644 --- a/arch/arm/firmware/trusted_foundations.c +++ b/arch/arm/firmware/trusted_foundations.c @@ -31,21 +31,25 @@ static unsigned long cpu_boot_addr; -static void __naked tf_generic_smc(u32 type, u32 arg1, u32 arg2) +static void tf_generic_smc(u32 type, u32 arg1, u32 arg2) { + register u32 r0 asm("r0") = type; + register u32 r1 asm("r1") = arg1; + register u32 r2 asm("r2") = arg2; + asm volatile( ".arch_extension sec\n\t" - "stmfd sp!, {r4 - r11, lr}\n\t" + "stmfd sp!, {r4 - r11}\n\t" __asmeq("%0", "r0") __asmeq("%1", "r1") __asmeq("%2", "r2") "mov r3, #0\n\t" "mov r4, #0\n\t" "smc #0\n\t" - "ldmfd sp!, {r4 - r11, pc}" + "ldmfd sp!, {r4 - r11}\n\t" : - : "r" (type), "r" (arg1), "r" (arg2) - : "memory"); + : "r" (r0), "r" (r1), "r" (r2) + : "memory", "r3", "r12", "lr"); } static int tf_set_cpu_boot_addr(int cpu, unsigned long boot_addr) |