diff options
author | Ashok Reddy Soma | 2022-05-05 23:53:45 -0600 |
---|---|---|
committer | Michal Simek | 2022-06-24 14:11:05 +0200 |
commit | 2eeceb4842b2465e07e654b78133bb035c28b7c2 (patch) | |
tree | e95d5ea35ab6cd1452853c76c1d4e68c5a04f4e2 /board/xilinx/versal | |
parent | a110caa206b5a19f2b8ed1f26a6bbd5e4c96597d (diff) |
arm64: versal: Add support to load an app at EL1
Add support to switch to EL1 and load an EL1 app from U-Boot which is
executing at EL2 or EL3 in aarch64 mode.
Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Link: https://lore.kernel.org/r/20220506055345.1921-1-ashok.reddy.soma@xilinx.com
Signed-off-by: Michal Simek <michal.simek@amd.com>
Diffstat (limited to 'board/xilinx/versal')
-rw-r--r-- | board/xilinx/versal/board.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/board/xilinx/versal/board.c b/board/xilinx/versal/board.c index a88f5bb177e..81663e0cd0e 100644 --- a/board/xilinx/versal/board.c +++ b/board/xilinx/versal/board.c @@ -91,6 +91,23 @@ int board_early_init_r(void) return 0; } +unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc, + char *const argv[]) +{ + int ret = 0; + + if (current_el() > 1) { + smp_kick_all_cpus(); + dcache_disable(); + armv8_switch_to_el1(0x0, 0, 0, 0, (unsigned long)entry, + ES_TO_AARCH64); + } else { + printf("FAIL: current EL is not above EL1\n"); + ret = EINVAL; + } + return ret; +} + static u8 versal_get_bootmode(void) { u8 bootmode; |