X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=common%2Fbootm.c;h=8bf84ebcb7e82e798f1a718625e2938e1b773bd4;hb=10b4dc520811fdfc5a31f6067be2b0cd0753998d;hp=e789f6818aa30d043fea4526bef9806b535bf679;hpb=809e0e398a91db7bf8b4d6259d9bfc6fbd6bce83;p=oweals%2Fu-boot.git diff --git a/common/bootm.c b/common/bootm.c index e789f6818a..8bf84ebcb7 100644 --- a/common/bootm.c +++ b/common/bootm.c @@ -202,8 +202,23 @@ static int bootm_find_os(cmd_tbl_t *cmdtp, int flag, int argc, } if (images.os.type == IH_TYPE_KERNEL_NOLOAD) { - images.os.load = images.os.image_start; - images.ep += images.os.load; + if (CONFIG_IS_ENABLED(CMD_BOOTI) && + images.os.arch == IH_ARCH_ARM64) { + ulong image_addr; + ulong image_size; + + ret = booti_setup(images.os.image_start, &image_addr, + &image_size, true); + if (ret != 0) + return 1; + + images.os.type = IH_TYPE_KERNEL; + images.os.load = image_addr; + images.ep = image_addr; + } else { + images.os.load = images.os.image_start; + images.ep += images.os.image_start; + } } images.os.start = map_to_sysmem(os_hdr); @@ -247,7 +262,7 @@ int bootm_find_images(int flag, int argc, char * const argv[]) puts("Could not find a valid device tree\n"); return 1; } - set_working_fdt_addr((ulong)images.ft_addr); + set_working_fdt_addr(map_to_sysmem(images.ft_addr)); #endif #if IMAGE_ENABLE_FIT