arm64: zynqmp: Add support to load an app at EL1
This patch is adding support to switch to EL1 while loading an EL1 application with u-boot running at EL above EL1 in aarch64 mode. Signed-off-by: Nitin Jain <nitinj@xilinx.com> Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
This commit is contained in:
parent
429f0b9e14
commit
51916864b3
@ -316,6 +316,23 @@ int zynq_board_read_rom_ethaddr(unsigned char *ethaddr)
|
||||
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;
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_SYS_SDRAM_BASE) && !defined(CONFIG_SYS_SDRAM_SIZE)
|
||||
int dram_init_banksize(void)
|
||||
{
|
||||
|
@ -111,6 +111,8 @@ extern int common_diskboot(cmd_tbl_t *cmdtp, const char *intf, int argc,
|
||||
extern int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
|
||||
extern int do_poweroff(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
|
||||
|
||||
extern unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc,
|
||||
char * const argv[]);
|
||||
/*
|
||||
* Error codes that commands return to cmd_process(). We use the standard 0
|
||||
* and 1 for success and failure, but add one more case - failure with a
|
||||
|
Loading…
Reference in New Issue
Block a user