diff options
author | H Hartley Sweeten <hartleys@visionengravers.com> | 2010-05-12 13:17:59 -0500 |
---|---|---|
committer | Peter Korsgaard <jacmet@sunsite.dk> | 2012-02-02 12:43:49 +0100 |
commit | 5256c77b46fb2fd9bf84dd790a7b8de873b7dcd9 (patch) | |
tree | 3f5d1da8f0368aa7ed381fe7858ed1a931349f78 /package/fis | |
parent | e8b320a7080cc75ed2de49728812681803b29c0d (diff) |
fis: sort output of fis list
This sorts the output of 'fis list' using the flash_base address
similar to the output from RedBoot.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'package/fis')
-rw-r--r-- | package/fis/fis-004-sorted_list.patch | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/package/fis/fis-004-sorted_list.patch b/package/fis/fis-004-sorted_list.patch new file mode 100644 index 000000000..6854977ba --- /dev/null +++ b/package/fis/fis-004-sorted_list.patch @@ -0,0 +1,30 @@ +--- fis.orig/fis.c 2010-05-12 11:09:22.000000000 -0700 ++++ fis/fis.c 2010-05-12 11:05:45.000000000 -0700 +@@ -401,9 +401,24 @@ + dir_t dir; + load_dir(fd,offset,&size,swap_endianness,&dir); + fprintf(stdout,"Name FLASH addr Mem addr Length Entry point Checksum\n"); +- FOR_EACH_DIR_ENTRY(dir,i) { +- dump_desc(stdout,get(i)); +- } ++ uint32_t last_addr = 0; ++ bool image_found; ++ do { ++ uint32_t lowest_addr = 0xffffffff; ++ iter_t index; ++ image_found = false; ++ FOR_EACH_DIR_ENTRY(dir,i) { ++ const struct fis_image_desc *d = get(i); ++ if ((d->flash_base >= last_addr) && (d->flash_base < lowest_addr)) { ++ lowest_addr = d->flash_base; ++ image_found = true; ++ index = i; ++ } ++ } ++ if (image_found) ++ dump_desc(stdout,get(index)); ++ last_addr = lowest_addr + 1; ++ } while (image_found == true); + } + + |