summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2016-02-24 09:14:42 -0700
committerSimon Glass <sjg@chromium.org>2016-02-26 08:53:10 -0700
commit7a80de464167ec45fdb70f63d83d07f7c2c57b82 (patch)
treefd70b67850d122106608b94979f9de99804755ad
parent24862c640ea50ac88be343161eb681bea5dbfeef (diff)
image: Correct the OS location code to work on sandbox
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>
-rw-r--r--common/bootm.c2
-rw-r--r--common/image-fit.c5
-rw-r--r--include/image.h5
3 files changed, 7 insertions, 5 deletions
diff --git a/common/bootm.c b/common/bootm.c
index 99d574db2c..df27089965 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -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;
}
diff --git a/common/image-fit.c b/common/image-fit.c
index c531ee74d7..d3fad30c34 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -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
diff --git a/include/image.h b/include/image.h
index 299d6d2a13..518a4f5291 100644
--- a/include/image.h
+++ b/include/image.h
@@ -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