summaryrefslogtreecommitdiff
path: root/cmd/elf.c
diff options
context:
space:
mode:
authorVasyl Vavrychuk <vvavrychuk@gmail.com>2018-04-10 12:36:36 +0300
committerTom Rini <trini@konsulko.com>2018-04-14 00:06:05 +0300
commit3194daa10ba642269a0948282423c48fd02fadce (patch)
treecc13b60949317255bbc82062098e8b3a2765df4f /cmd/elf.c
parent52ff8020d02f312364ceaf0b1114759d3a1f357b (diff)
downloadu-boot-3194daa10ba642269a0948282423c48fd02fadce.tar.xz
vxworks: fixed cpu enable using PSCI on armv8
Without armv8_setup_psci register VBAR_EL3 is not set up property which makes SMC calls jump to invalid location. smp_kick_all_cpus is required to make slave cpus leave gic_wait_for_interrupt. Without this they will never pursue booting process. Fix was applied to the two ways of booting VxWorks: bootvx and bootm commands. This implementation is very similar to what is done in boot_jump_linux in arch/arm/lib/bootm.c file. Tested on VxWorks 7 release SR0520 2017-12-08 Intel Stratix 10 SX SoC Development Kit board. Signed-off-by: Vasyl Vavrychuk <vasyl.vavrychuk@globallogic.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'cmd/elf.c')
-rw-r--r--cmd/elf.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/cmd/elf.c b/cmd/elf.c
index 038796498c..19479bb706 100644
--- a/cmd/elf.c
+++ b/cmd/elf.c
@@ -369,6 +369,11 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
printf("## Starting vxWorks at 0x%08lx ...\n", addr);
dcache_disable();
+#if defined(CONFIG_ARM64) && defined(CONFIG_ARMV8_PSCI)
+ armv8_setup_psci();
+ smp_kick_all_cpus();
+#endif
+
#ifdef CONFIG_X86
/* VxWorks on x86 uses stack to pass parameters */
((asmlinkage void (*)(int))addr)(0);