[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