On 13 June 2018 at 14:13, Marek Vasut <marek.va...@gmail.com> wrote: > 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+rene...@gmail.com> > Cc: Bin Chen <bin.c...@linaro.org> > Cc: Masahiro Yamada <yamada.masah...@socionext.com> > Cc: Tom Rini <tr...@konsulko.com> > --- > V2: Rename ignore_ep to force_reloc > V3: No change > V4: - Add stdbool.h include > - Switch force_reloc to bool > --- > arch/arm/lib/image.c | 5 +++-- > cmd/booti.c | 2 +- > include/image.h | 5 ++++- > 3 files changed, 8 insertions(+), 4 deletions(-) > > diff --git a/arch/arm/lib/image.c b/arch/arm/lib/image.c > index 1a04e2b875..699bf44e70 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; > diff --git a/cmd/booti.c b/cmd/booti.c > index 45fbb99b68..04353b68ec 100644 > --- a/cmd/booti.c > +++ b/cmd/booti.c > @@ -37,7 +37,7 @@ static int booti_start(cmd_tbl_t *cmdtp, int flag, int > argc, > debug("* kernel: cmdline image address = 0x%08lx\n", ld); > } > > - ret = booti_setup(ld, &relocated_addr, &image_size); > + ret = booti_setup(ld, &relocated_addr, &image_size, false); > if (ret != 0) > return 1; > > diff --git a/include/image.h b/include/image.h > index 95d5934344..420b8ff576 100644 > --- a/include/image.h > +++ b/include/image.h > @@ -17,6 +17,7 @@ > > #include "compiler.h" > #include <asm/byteorder.h> > +#include <stdbool.h> > > /* Define this to avoid #ifdefs later on */ > struct lmb; > @@ -881,9 +882,11 @@ int bootz_setup(ulong image, ulong *start, ulong > *end); > * @image: Address of image > * @start: Returns start address of image > * @size : Returns size image > + * @force_reloc: Ignore image->ep field, always place image to RAM start > * @return 0 if OK, 1 if the image was not recognised > */ > -int booti_setup(ulong image, ulong *relocated_addr, ulong *size); > +int booti_setup(ulong image, ulong *relocated_addr, ulong *size, > + bool force_reloc); > > /*******************************************************************/ > /* New uImage format specific code (prefixed with fit_) */ >
Reviewed-By: Bin Chen <bin.c...@linaro.org> > -- > 2.17.1 > > -- Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot