summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorBin Meng <bmeng.cn@gmail.com>2015-10-07 20:19:19 -0700
committerSimon Glass <sjg@chromium.org>2015-10-21 07:46:26 -0600
commit9aa1280a5644a1d05859b862ebc7b60a862e0ef3 (patch)
tree7c62336fde524edcba2791c065a4c4efcaee42bc /common
parentb90ff0fdaadc4de096afed605b36aac1185fc1dc (diff)
cmd: bootvx: Add asmlinkage to the VxWorks x86 entry
VxWorks on x86 uses stack to pass parameters. Reported-by: Jian Luo <jian.luo4@boschrexroth.de> Signed-off-by: Bin Meng <bmeng.cn@gmail.com> Acked-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/cmd_elf.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/common/cmd_elf.c b/common/cmd_elf.c
index d6a2036a992..86e694ac69c 100644
--- a/common/cmd_elf.c
+++ b/common/cmd_elf.c
@@ -20,6 +20,7 @@
#include <vxworks.h>
#ifdef CONFIG_X86
#include <asm/e820.h>
+#include <linux/linkage.h>
#endif
/*
@@ -379,7 +380,12 @@ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
printf("## Starting vxWorks at 0x%08lx ...\n", addr);
dcache_disable();
+#ifdef CONFIG_X86
+ /* VxWorks on x86 uses stack to pass parameters */
+ ((asmlinkage void (*)(int))addr)(0);
+#else
((void (*)(int))addr)(0);
+#endif
puts("## vxWorks terminated\n");