mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 12:56:00 +01:00
sandbox: Add a way to specify the sandbox executable
At present the sandbox executable is assumed to be arg[0] but this only works for a single jump (e.g. from SPL to U-Boot). Add a new arg to solve this issue, along with a detailed comment. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
830690d2ed
commit
b2d93c6aaa
@ -244,6 +244,36 @@ static int sandbox_cmdline_cb_jump(struct sandbox_state *state,
|
|||||||
}
|
}
|
||||||
SANDBOX_CMDLINE_OPT_SHORT(jump, 'j', 1, "Jumped from previous U-Boot");
|
SANDBOX_CMDLINE_OPT_SHORT(jump, 'j', 1, "Jumped from previous U-Boot");
|
||||||
|
|
||||||
|
static int sandbox_cmdline_cb_program(struct sandbox_state *state,
|
||||||
|
const char *arg)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Record the program name to use when jumping to future phases. This
|
||||||
|
* is the original executable which holds all the phases. We need to
|
||||||
|
* use this instead of argv[0] since each phase is started by
|
||||||
|
* extracting a particular binary from the full program, then running
|
||||||
|
* it. Therefore in that binary, argv[0] contains only the
|
||||||
|
* current-phase executable.
|
||||||
|
*
|
||||||
|
* For example, sandbox TPL may be started using image file:
|
||||||
|
*
|
||||||
|
* ./image.bin
|
||||||
|
*
|
||||||
|
* but then TPL needs to run VPL, which it does by extracting the VPL
|
||||||
|
* image from the image.bin file.
|
||||||
|
*
|
||||||
|
* ./temp-vpl
|
||||||
|
*
|
||||||
|
* When VPL runs it needs access to the original image.bin so it can
|
||||||
|
* extract the next phase (SPL). This works if we use '-f image.bin'
|
||||||
|
* when starting the original image.bin file.
|
||||||
|
*/
|
||||||
|
state->prog_fname = arg;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
SANDBOX_CMDLINE_OPT_SHORT(program, 'p', 1, "U-Boot program name");
|
||||||
|
|
||||||
static int sandbox_cmdline_cb_memory(struct sandbox_state *state,
|
static int sandbox_cmdline_cb_memory(struct sandbox_state *state,
|
||||||
const char *arg)
|
const char *arg)
|
||||||
{
|
{
|
||||||
|
@ -71,7 +71,8 @@ struct sandbox_state {
|
|||||||
const char *parse_err; /* Error to report from parsing */
|
const char *parse_err; /* Error to report from parsing */
|
||||||
int argc; /* Program arguments */
|
int argc; /* Program arguments */
|
||||||
char **argv; /* Command line arguments */
|
char **argv; /* Command line arguments */
|
||||||
const char *jumped_fname; /* Jumped from previous U_Boot */
|
const char *jumped_fname; /* Jumped from previous U-Boot */
|
||||||
|
const char *prog_fname; /* U-Boot executable filename */
|
||||||
uint8_t *ram_buf; /* Emulated RAM buffer */
|
uint8_t *ram_buf; /* Emulated RAM buffer */
|
||||||
unsigned long ram_size; /* Size of RAM buffer */
|
unsigned long ram_size; /* Size of RAM buffer */
|
||||||
const char *ram_buf_fname; /* Filename to use for RAM buffer */
|
const char *ram_buf_fname; /* Filename to use for RAM buffer */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user