Mercurial > ecos
changeset 1349:4444f5b3be7b
Fix 'fis free' list handling - from Chris Garry
| author | gthomas |
|---|---|
| date | Tue, 04 Nov 2003 14:06:33 +0000 |
| parents | 0786f4fb3f8c |
| children | 83bf536405e0 |
| files | packages/redboot/current/ChangeLog packages/redboot/current/src/flash.c |
| diffstat | 2 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/redboot/current/ChangeLog +++ b/packages/redboot/current/ChangeLog @@ -1,3 +1,8 @@ +2003-11-04 Gary Thomas <gary@mlbassoc.com> + + * src/flash.c (find_free): Better handling of end address - otherwise + list of free blocks could be incorrect. Thanks to Chris Garry. + 2003-11-01 Gary Thomas <gary@mlbassoc.com> * cdl/redboot.cdl: Reorg to allow disk operations on other than
--- a/packages/redboot/current/src/flash.c +++ b/packages/redboot/current/src/flash.c @@ -523,9 +523,9 @@ find_free(struct free_chunk *chunks) // Do not search the area reserved for pre-RedBoot systems: fis_ptr = (CYG_ADDRESS *)((CYG_ADDRESS)flash_start + - CYGNUM_REDBOOT_FLASH_RESERVED_BASE + - CYGBLD_REDBOOT_MIN_IMAGE_SIZE); - fis_end = (CYG_ADDRESS *)(CYG_ADDRESS)flash_end; + CYGNUM_REDBOOT_FLASH_RESERVED_BASE + + CYGBLD_REDBOOT_MIN_IMAGE_SIZE); + fis_end = (CYG_ADDRESS *)flash_end; chunks[num_chunks-1].start = (CYG_ADDRESS)fis_ptr; chunks[num_chunks-1].end = (CYG_ADDRESS)fis_end; flash_read(fis_addr, fis_work_block, fisdir_size, (void **)&err_addr); @@ -538,7 +538,7 @@ find_free(struct free_chunk *chunks) (img->flash_base <= chunks[idx].end)) { if (img->flash_base == chunks[idx].start) { chunks[idx].start += img->size; - if (chunks[idx].start == chunks[idx].end) { + if (chunks[idx].start >= chunks[idx].end) { // This free chunk has collapsed while (idx < (num_chunks-1)) { chunks[idx] = chunks[idx+1];
