diff options
author | Gerald Van Baren <vanbaren@cideas.com> | 2007-04-26 02:47:15 (GMT) |
---|---|---|
committer | Gerald Van Baren <vanbaren@cideas.com> | 2007-08-10 23:21:35 (GMT) |
commit | 6be07cc1ca458278c85ecdbf1a0536cff4c701ec (patch) | |
tree | 90b6bc88d3cccec83140a5572f5d6155a73b35c4 | |
parent | bb930e76fea6cf89ca2d98e2f7c7a6043d79327d (diff) | |
download | u-boot-6be07cc1ca458278c85ecdbf1a0536cff4c701ec.tar.xz |
Improve fdt move length handling.
Make the length parameter optional: if not specified, do the move using
the current size unchanged.
Signed-off-by: Gerald Van Baren <vanbaren@cideas.com>
-rw-r--r-- | common/cmd_fdt.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c index 08fe351..a119985 100644 --- a/common/cmd_fdt.c +++ b/common/cmd_fdt.c @@ -115,7 +115,7 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) int len; int err; - if (argc != 5) { + if (argc < 4) { printf ("Usage:\n%s\n", cmdtp->usage); return 1; } @@ -129,11 +129,20 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) } newaddr = (struct fdt_header *)simple_strtoul(argv[3], NULL, 16); - len = simple_strtoul(argv[4], NULL, 16); - if (len < fdt_totalsize(fdt)) { - printf ("New length %d < existing length %d, aborting.\n", - len, fdt_totalsize(fdt)); - return 1; + + /* + * If the user specifies a length, use that. Otherwise use the + * current length. + */ + if (argc <= 4) { + len = fdt_totalsize(fdt); + } else { + len = simple_strtoul(argv[4], NULL, 16); + if (len < fdt_totalsize(fdt)) { + printf ("New length 0x%X < existing length 0x%X, aborting.\n", + len, fdt_totalsize(fdt)); + return 1; + } } /* |