riscv: booti: do not force relocation if force_reloc is not set

If force_reloc flag is not set and booti is called for an address
ouside RAM (i. e. QSPI NOR flash), we should honor that and not try
to force relocation in a bogus fashion.

Signed-off-by: Vitaly Wool <vitaly.wool@konsulko.com>
Reviewed-by: Leo Yu-Chi Liang <ycliang@andestech.com>
This commit is contained in:
Vitaly Wool 2021-04-06 10:50:16 +03:00 committed by Leo Yu-Chi Liang
parent 66a21be674
commit 6ba8eeb6f1

View file

@ -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);