diff options
author | Alison Wang <b18965@freescale.com> | 2016-11-10 02:49:05 (GMT) |
---|---|---|
committer | York Sun <york.sun@nxp.com> | 2016-11-22 19:40:24 (GMT) |
commit | 3db86f4bbd7a723421c8c9bf9bd09d58e17e9736 (patch) | |
tree | c3a125c86cd249a0b6037dba0004ec5563575d1c /arch/arm/cpu/armv8/sec_firmware_asm.S | |
parent | e2c18e40b111470fbe1aca47b58570099695f10a (diff) | |
download | u-boot-3db86f4bbd7a723421c8c9bf9bd09d58e17e9736.tar.xz |
armv8: fsl-layerscape: Support loading 32-bit OS with PSCI enabled
As PSCI and secure monitor firmware framework are enabled, this patch is
to support loading 32-bit OS in such case. The default target exception
level returned to U-Boot is EL2, so the corresponding work to switch to
AArch32 EL2 and jump to 32-bit OS are done in U-Boot and secure firmware
together.
Signed-off-by: Alison Wang <alison.wang@nxp.com>
Reviewed-by: York Sun <york.sun@nxp.com>
Diffstat (limited to 'arch/arm/cpu/armv8/sec_firmware_asm.S')
-rw-r--r-- | arch/arm/cpu/armv8/sec_firmware_asm.S | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv8/sec_firmware_asm.S b/arch/arm/cpu/armv8/sec_firmware_asm.S index 0c6a462..1b39f1d 100644 --- a/arch/arm/cpu/armv8/sec_firmware_asm.S +++ b/arch/arm/cpu/armv8/sec_firmware_asm.S @@ -50,4 +50,27 @@ ENTRY(_sec_firmware_support_psci_version) smc #0 ret ENDPROC(_sec_firmware_support_psci_version) + +/* + * Switch from AArch64 EL2 to AArch32 EL2 + * @param inputs: + * x0: argument, zero + * x1: machine nr + * x2: fdt address + * x3: kernel entry point + * @param outputs for secure firmware: + * x0: function id + * x1: kernel entry point + * x2: machine nr + * x3: fdt address +*/ +ENTRY(armv8_el2_to_aarch32) + mov x0, x3 + mov x3, x2 + mov x2, x1 + mov x1, x0 + ldr x0, =0xc000ff04 + smc #0 + ret +ENDPROC(armv8_el2_to_aarch32) #endif |