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.s...@xilinx.com>
---

 board/xilinx/versal/board.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/board/xilinx/versal/board.c b/board/xilinx/versal/board.c
index 2e2807eee4..a0f937eb45 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;
-- 
2.17.1

Reply via email to