@@ -201,7 +201,7 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc,
images.ep += images.os.load;
}
- images.os.start = (ulong)os_hdr;
+ images.os.start = map_to_sysmem(os_hdr);
return 0;
}
@@ -851,6 +851,11 @@ static int fit_image_hash_get_ignore(const void *fit, int noffset, int *ignore)
return 0;
}
+ulong fit_get_end(const void *fit)
+{
+ return map_to_sysmem((void *)(fit + fdt_totalsize(fit)));
+}
+
/**
* fit_set_timestamp - set node timestamp property
* @fit: pointer to the FIT format image header
@@ -818,10 +818,7 @@ static inline ulong fit_get_size(const void *fit)
* returns:
* end address of the FIT image (blob) in memory
*/
-static inline ulong fit_get_end(const void *fit)
-{
- return (ulong)fit + fdt_totalsize(fit);
-}
+ulong fit_get_end(const void *fit);
/**
* fit_get_name - get FIT node name
A recent change broke the 'bootm' command on sandbox. The root cause is using a pointer as an address. Conversion from pointer to address needs to use map_to_sysmem() so that sandbox can do the right thing. The problem was pre-existing but uncovered by a recent commit. Fix this. Also move fit_get_end() to the C file to avoid needing to include mapmem.h (and thus asm/io.h) everywhere. Fixes: 1fec3c5d (common/image.c: Make boot_get_ramdisk() perform a check for Android images) Signed-off-by: Simon Glass <sjg@chromium.org> --- common/bootm.c | 2 +- common/image-fit.c | 5 +++++ include/image.h | 5 +---- 3 files changed, 7 insertions(+), 5 deletions(-)