Dear Wolfgang, Am Montag, 9. August 2010, 00:18:19 schrieb Wolfgang Denk: > In message <1279701826-20083-1-git-send-email-alexander.st...@systec- electronic.com> you wrote: > > Signed-off-by: Alexander Stein <alexander.st...@systec-electronic.com> > > --- > > > > common/image.c | 11 ++++++++--- > > 1 files changed, 8 insertions(+), 3 deletions(-) > > Why would this be needed? Do you have an error scenario?
IIRC the problem arose when i downloaded my image to 0x20000000 (SD-RAM) using TFTP and my Linux kernel entry point was at 0x20008000. So when CONFIG_HW_WATCHDOG is defined u-boot starts copying from the beginning thus overriding the source. Finally i got decompression errors upon Linux kernel start. Without CONFIG_HW_WATCHDOG memmove_wd is simply memmove which handled this cased correctly. > > + if (to <= from) > > + { > > + memmove (to, from, tail); > > + to += tail; > > + from += tail; > > + } else { > > + memmove (to + len - tail, from + len - tail, tail); > > In which way is this supposed to allow overlapping memory areas? With this change u-boot starts to copy from the end to the beginning thus preventing overriding the source. This change was adopted from memmove (lib/string.c) which handles this case correctly. Best regards, Alexander _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot