mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-20 22:21:41 +00:00
x86: Add support for specifying an initrd with the zboot command
This change finishes plumbing the initrd support built into the zboot mechanism out to the command interface. It also fixes a bug in the command declaration where the kernel size could be passed as an optional second parameter but not enough arguments were allowed. Signed-off-by: Gabe Black <gabeblack@chromium.org>
This commit is contained in:
parent
69370d144a
commit
6f9d9986d5
1 changed files with 19 additions and 4 deletions
|
@ -321,6 +321,8 @@ int do_zboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
||||||
void *load_address;
|
void *load_address;
|
||||||
char *s;
|
char *s;
|
||||||
ulong bzImage_size = 0;
|
ulong bzImage_size = 0;
|
||||||
|
ulong initrd_addr = 0;
|
||||||
|
ulong initrd_size = 0;
|
||||||
|
|
||||||
disable_interrupts();
|
disable_interrupts();
|
||||||
|
|
||||||
|
@ -337,9 +339,15 @@ int do_zboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
||||||
if (s)
|
if (s)
|
||||||
bzImage_addr = (void *)simple_strtoul(s, NULL, 16);
|
bzImage_addr = (void *)simple_strtoul(s, NULL, 16);
|
||||||
|
|
||||||
if (argc >= 3)
|
if (argc >= 3) {
|
||||||
/* argv[2] holds the size of the bzImage */
|
/* argv[2] holds the size of the bzImage */
|
||||||
bzImage_size = simple_strtoul(argv[2], NULL, 16);
|
bzImage_size = simple_strtoul(argv[2], NULL, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (argc >= 4)
|
||||||
|
initrd_addr = simple_strtoul(argv[3], NULL, 16);
|
||||||
|
if (argc >= 5)
|
||||||
|
initrd_size = simple_strtoul(argv[4], NULL, 16);
|
||||||
|
|
||||||
/* Lets look for */
|
/* Lets look for */
|
||||||
base_ptr = load_zimage(bzImage_addr, bzImage_size, &load_address);
|
base_ptr = load_zimage(bzImage_addr, bzImage_size, &load_address);
|
||||||
|
@ -349,7 +357,7 @@ int do_zboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (setup_zimage(base_ptr, (char *)base_ptr + COMMAND_LINE_OFFSET,
|
if (setup_zimage(base_ptr, (char *)base_ptr + COMMAND_LINE_OFFSET,
|
||||||
0, 0, 0)) {
|
0, initrd_addr, initrd_size)) {
|
||||||
printf("Setting up boot parameters failed ...\n");
|
printf("Setting up boot parameters failed ...\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -366,7 +374,14 @@ int do_zboot(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
U_BOOT_CMD(
|
U_BOOT_CMD(
|
||||||
zboot, 2, 0, do_zboot,
|
zboot, 5, 0, do_zboot,
|
||||||
"Boot bzImage",
|
"Boot bzImage",
|
||||||
""
|
"[addr] [size] [initrd addr] [initrd size]\n"
|
||||||
|
" addr - The optional starting address of the bzimage.\n"
|
||||||
|
" If not set it defaults to the environment\n"
|
||||||
|
" variable \"fileaddr\".\n"
|
||||||
|
" size - The optional size of the bzimage. Defaults to\n"
|
||||||
|
" zero.\n"
|
||||||
|
" initrd addr - The address of the initrd image to use, if any.\n"
|
||||||
|
" initrd size - The size of the initrd image to use, if any.\n"
|
||||||
);
|
);
|
||||||
|
|
Loading…
Add table
Reference in a new issue