mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-09-08 13:53:21 +09:00
![Chen-Yu Tsai](/assets/img/avatar_default.png)
Now that we have a secure data section and space to store per-CPU target PC address, switch to it instead of storing the target PC on the stack. Also save clobbered r4-r7 registers on the stack and restore them on return in psci_cpu_on for Tegra, i.MX7, and LS102xA platforms. Signed-off-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
40 lines
525 B
ArmAsm
40 lines
525 B
ArmAsm
#include <config.h>
|
|
#include <linux/linkage.h>
|
|
|
|
#include <asm/armv7.h>
|
|
#include <asm/arch-armv7/generictimer.h>
|
|
#include <asm/psci.h>
|
|
|
|
.pushsection ._secure.text, "ax"
|
|
|
|
.arch_extension sec
|
|
|
|
.globl psci_cpu_on
|
|
psci_cpu_on:
|
|
push {r4, r5, lr}
|
|
|
|
mov r4, r0
|
|
mov r5, r1
|
|
mov r0, r1
|
|
mov r1, r2
|
|
bl psci_save_target_pc
|
|
|
|
mov r0, r4
|
|
mov r1, r5
|
|
ldr r2, =psci_cpu_entry
|
|
bl imx_cpu_on
|
|
|
|
pop {r4, r5, pc}
|
|
|
|
.globl psci_cpu_off
|
|
psci_cpu_off:
|
|
|
|
bl psci_cpu_off_common
|
|
bl psci_get_cpu_id
|
|
bl imx_cpu_off
|
|
|
|
1: wfi
|
|
b 1b
|
|
|
|
.popsection
|