summaryrefslogtreecommitdiff
path: root/arch/riscv/lib/image.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/riscv/lib/image.c')
-rw-r--r--arch/riscv/lib/image.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/riscv/lib/image.c b/arch/riscv/lib/image.c
index 47f2edcf7f..a65a5b8d17 100644
--- a/arch/riscv/lib/image.c
+++ b/arch/riscv/lib/image.c
@@ -50,7 +50,12 @@ int booti_setup(ulong image, ulong *relocated_addr, ulong *size,
return -EINVAL;
}
*size = lhdr->image_size;
- *relocated_addr = gd->ram_base + lhdr->text_offset;
+ if (force_reloc ||
+ (gd->ram_base <= image && image < gd->ram_base + gd->ram_size)) {
+ *relocated_addr = gd->ram_base + lhdr->text_offset;
+ } else {
+ *relocated_addr = image;
+ }
unmap_sysmem(lhdr);