diff options
author | Simon Glass <sjg@chromium.org> | 2018-11-15 18:44:08 -0700 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2018-11-26 08:25:37 -0500 |
commit | 27028f186d17a25507eb7d5c9b852d8555432679 (patch) | |
tree | 3782561607ad92cb008bfb76f960802c994cc394 /arch/sandbox/cpu/os.c | |
parent | 65f3b1f99274ef876499c082aa66a83f46372d16 (diff) |
sandbox: Boot in U-Boot through the standard call
Most architectures use jump_to_image_no_args() to jump from SPL to U-Boot.
At present sandbox is special in that it jumps in its
spl_board_load_image() call. This is not strictly correct, and means that
sandbox misses out some parts of board_init_r(), just as calling
bloblist_finish(), for example.
Change spl_board_load_image() to just identify the filename to boot, and
implement jump_to_image_no_args() to actually jump to it.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'arch/sandbox/cpu/os.c')
-rw-r--r-- | arch/sandbox/cpu/os.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/arch/sandbox/cpu/os.c b/arch/sandbox/cpu/os.c index 7b59e040ec..aa92694342 100644 --- a/arch/sandbox/cpu/os.c +++ b/arch/sandbox/cpu/os.c @@ -666,8 +666,11 @@ static int os_jump_to_file(const char *fname) err = execv(fname, argv); os_free(argv); - if (err) + if (err) { + perror("Unable to run image"); + printf("Image filename '%s'\n", mem_fname); return err; + } return unlink(fname); } @@ -747,17 +750,7 @@ int os_find_u_boot(char *fname, int maxlen) int os_spl_to_uboot(const char *fname) { - struct sandbox_state *state = state_get_current(); - char *argv[state->argc + 1]; - int ret; - - memcpy(argv, state->argv, sizeof(char *) * (state->argc + 1)); - argv[0] = (char *)fname; - ret = execv(fname, argv); - if (ret) - return ret; - - return unlink(fname); + return os_jump_to_file(fname); } void os_localtime(struct rtc_time *rt) |