We should not use "bi_dram[0].start + text_offset" as the image dst. The text_offset maybe 0 for some images, such as XEN. Then the dst is actually bi_dram[0].start, which maybe the location of spin table.
Let's use "images->ep & ~(ih->text_offset)" as the dst address. Signed-off-by: Peng Fan <peng....@nxp.com> Cc: Tom Rini <tr...@konsulko.com> --- cmd/booti.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmd/booti.c b/cmd/booti.c index 6c1c998..afc87e3 100644 --- a/cmd/booti.c +++ b/cmd/booti.c @@ -54,7 +54,9 @@ static int booti_setup(bootm_headers_t *images) * If we are not at the correct run-time location, set the new * correct location and then move the image there. */ - dst = gd->bd->bi_dram[0].start + le64_to_cpu(ih->text_offset); + dst = images->ep & ~(ih->text_offset); + if (dst < gd->bd->bi_dram[0].start) + dst = gd->bd->bi_dram[0].start + le64_to_cpu(ih->text_offset); unmap_sysmem(ih); -- 2.6.2 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot