aboutsummaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorMarek Vasut <marek.vasut@gmail.com>2018-06-13 06:13:32 +0200
committerTom Rini <trini@konsulko.com>2018-06-19 07:31:45 -0400
commit7f13b374fd8fa59f694a1127a79f9bfc3891ef0d (patch)
tree7052297f947750634f6c86eb139969be7234e7d6 /arch
parentfe996ec0663703846d8ce11446c07b6ae0bf9077 (diff)
downloadu-boot-7f13b374fd8fa59f694a1127a79f9bfc3891ef0d.zip
u-boot-7f13b374fd8fa59f694a1127a79f9bfc3891ef0d.tar.gz
u-boot-7f13b374fd8fa59f694a1127a79f9bfc3891ef0d.tar.bz2
ARM: image: Add option for ignoring ep bit 3
Add option to the booti_setup() which indicates to it that the caller requires the image to be relocated to the beginning of the RAM and that the information whether the image can be located anywhere in RAM at 2 MiB aligned boundary or not is to be ignored. This is useful ie. in case the Image is wrapped in another envelope, ie. fitImage and not relocating it but moving it would corrupt the envelope. Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Bin Chen <bin.chen@linaro.org> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Tom Rini <trini@konsulko.com> Reviewed-By: Bin Chen <bin.chen@linaro.org>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/lib/image.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/arm/lib/image.c b/arch/arm/lib/image.c
index 1a04e2b..699bf44 100644
--- a/arch/arm/lib/image.c
+++ b/arch/arm/lib/image.c
@@ -26,7 +26,8 @@ struct Image_header {
uint32_t res5;
};
-int booti_setup(ulong image, ulong *relocated_addr, ulong *size)
+int booti_setup(ulong image, ulong *relocated_addr, ulong *size,
+ bool force_reloc)
{
struct Image_header *ih;
uint64_t dst;
@@ -63,7 +64,7 @@ int booti_setup(ulong image, ulong *relocated_addr, ulong *size)
* images->ep. Otherwise, relocate the image to the base of RAM
* since memory below it is not accessible via the linear mapping.
*/
- if (le64_to_cpu(ih->flags) & BIT(3))
+ if (!force_reloc && (le64_to_cpu(ih->flags) & BIT(3)))
dst = image - text_offset;
else
dst = gd->bd->bi_dram[0].start;