Merge tag 'u-boot-atmel-fixes-2020.07-a' of https://gitlab.denx.de/u-boot/custodians...
[oweals/u-boot.git] / arch / arm / lib / image.c
index 1a04e2b875615313c745d437a15872044ce64fe0..94590d3049ad197a3fc8193d4ddaa4d3920e3927 100644 (file)
@@ -5,7 +5,9 @@
  */
 
 #include <common.h>
+#include <image.h>
 #include <mapmem.h>
+#include <linux/bitops.h>
 #include <linux/sizes.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -26,7 +28,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 +66,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;