summaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
authorPeng Fan <peng.fan@nxp.com>2020-07-10 11:22:20 +0800
committerPeng Fan <peng.fan@nxp.com>2020-07-14 15:23:48 +0800
commiteb3967388e7707edb21dd537b77a30f57e706fac (patch)
tree1a56b447165b4d687172e1f0a34efdacda6bfcd7 /arch/arm
parent3c41728d80f7a6178dd4ec91c28347d9768ab200 (diff)
downloadu-boot-eb3967388e7707edb21dd537b77a30f57e706fac.tar.gz
u-boot-eb3967388e7707edb21dd537b77a30f57e706fac.tar.xz
u-boot-eb3967388e7707edb21dd537b77a30f57e706fac.zip
imx8m: implement armv8_el2_to_aarch32
Add iMX8M specific armv8_el2_to_aarch32 to let AArch64 mode U-Boot could boot aarch32 mode linux with FIT image as below: /dts-v1/; / { description = "Configuration to load ARM32 Linux"; images { kernel@1 { description = "ARM32 Linux kernel"; data = /incbin/("./Image"); type = "kernel"; arch = "arm"; os = "linux"; compression = "none"; load = <0x40008000>; entry = <0x40008000>; hash@1 { algo = "md5"; }; }; fdt@1 { description = "Flattened Device Tree blob"; data = /incbin/("./imx8mm-evk.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; load = <0x43000000>; hash@1 { algo = "md5"; }; }; }; configurations { default = "config@1"; config@1 { description = "fsl-imx8mm-evk"; kernel = "kernel@1"; fdt = "fdt@1"; }; }; }; Signed-off-by: Peng Fan <peng.fan@nxp.com>
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-imx/imx8m/lowlevel_init.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/imx8m/lowlevel_init.S b/arch/arm/mach-imx/imx8m/lowlevel_init.S
index a4c6466ca9..a49a9cdb35 100644
--- a/arch/arm/mach-imx/imx8m/lowlevel_init.S
+++ b/arch/arm/mach-imx/imx8m/lowlevel_init.S
@@ -60,3 +60,15 @@ restore_boot_params:
ldr x0, [x0]
mov sp, x0
ret
+
+.global armv8_el2_to_aarch32
+armv8_el2_to_aarch32:
+ cmp x0, #0
+ bne 0f
+ mov x3, x2
+ mov x2, x1
+ mov x1, x4
+ ldr x0, =0xc20000fd
+0:
+ smc #0
+ ret