[U-Boot] [PATCH] cmd: booti: fix the image runtime location
Peng Fan
van.freenix at gmail.com
Mon Sep 12 11:07:58 CEST 2016
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.fan at nxp.com>
Cc: Tom Rini <trini at 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
More information about the U-Boot
mailing list