]> Git Repo - J-u-boot.git/blobdiff - cmd/booti.c
net: wget: integrate struct wget_info into legacy wget code
[J-u-boot.git] / cmd / booti.c
index 2db8f4a16ff2ee7c175f74a40bf7ec8bfefa1d84..43e79e87201b992acf915c96f326070f06942919 100644 (file)
@@ -4,7 +4,6 @@
  * Wolfgang Denk, DENX Software Engineering, [email protected].
  */
 
-#include <common.h>
 #include <bootm.h>
 #include <command.h>
 #include <image.h>
@@ -20,9 +19,9 @@ DECLARE_GLOBAL_DATA_PTR;
 /*
  * Image booting support
  */
-static int booti_start(struct cmd_tbl *cmdtp, int flag, int argc,
-                      char *const argv[], struct bootm_headers *images)
+static int booti_start(struct bootm_info *bmi)
 {
+       struct bootm_headers *images = bmi->images;
        int ret;
        ulong ld;
        ulong relocated_addr;
@@ -34,16 +33,15 @@ static int booti_start(struct cmd_tbl *cmdtp, int flag, int argc,
        unsigned long decomp_len;
        int ctype;
 
-       ret = do_bootm_states(cmdtp, flag, argc, argv, BOOTM_STATE_START,
-                             images, 1);
+       ret = bootm_run_states(bmi, BOOTM_STATE_START);
 
        /* Setup Linux kernel Image entry point */
-       if (!argc) {
+       if (!bmi->addr_img) {
                ld = image_load_addr;
                debug("*  kernel: default image load address = 0x%08lx\n",
                                image_load_addr);
        } else {
-               ld = hextoul(argv[0], NULL);
+               ld = hextoul(bmi->addr_img, NULL);
                debug("*  kernel: cmdline image address = 0x%08lx\n", ld);
        }
 
@@ -75,12 +73,12 @@ static int booti_start(struct cmd_tbl *cmdtp, int flag, int argc,
        unmap_sysmem((void *)ld);
 
        ret = booti_setup(ld, &relocated_addr, &image_size, false);
-       if (ret != 0)
+       if (ret)
                return 1;
 
        /* Handle BOOTM_STATE_LOADOS */
        if (relocated_addr != ld) {
-               printf("Moving Image from 0x%lx to 0x%lx, end=%lx\n", ld,
+               printf("Moving Image from 0x%lx to 0x%lx, end=0x%lx\n", ld,
                       relocated_addr, relocated_addr + image_size);
                memmove((void *)relocated_addr, (void *)ld, image_size);
        }
@@ -89,15 +87,14 @@ static int booti_start(struct cmd_tbl *cmdtp, int flag, int argc,
        images->os.start = relocated_addr;
        images->os.end = relocated_addr + image_size;
 
-       lmb_reserve(&images->lmb, images->ep, le32_to_cpu(image_size));
+       lmb_reserve(images->ep, le32_to_cpu(image_size));
 
        /*
         * Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not
         * have a header that provide this informaiton.
         */
-       if (bootm_find_images(image_load_addr, cmd_arg1(argc, argv),
-                             cmd_arg2(argc, argv), relocated_addr,
-                             image_size))
+       if (bootm_find_images(image_load_addr, bmi->conf_ramdisk, bmi->conf_fdt,
+                             relocated_addr, image_size))
                return 1;
 
        return 0;
@@ -105,12 +102,25 @@ static int booti_start(struct cmd_tbl *cmdtp, int flag, int argc,
 
 int do_booti(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
+       struct bootm_info bmi;
+       int states;
        int ret;
 
        /* Consume 'booti' */
        argc--; argv++;
 
-       if (booti_start(cmdtp, flag, argc, argv, &images))
+       bootm_init(&bmi);
+       if (argc)
+               bmi.addr_img = argv[0];
+       if (argc > 1)
+               bmi.conf_ramdisk = argv[1];
+       if (argc > 2)
+               bmi.conf_fdt = argv[2];
+       bmi.boot_progress = true;
+       bmi.cmd_name = "booti";
+       /* do not set up argc and argv[] since nothing uses them */
+
+       if (booti_start(&bmi))
                return 1;
 
        /*
@@ -120,19 +130,17 @@ int do_booti(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
        bootm_disable_interrupts();
 
        images.os.os = IH_OS_LINUX;
-#ifdef CONFIG_RISCV_SMODE
-       images.os.arch = IH_ARCH_RISCV;
-#elif CONFIG_ARM64
-       images.os.arch = IH_ARCH_ARM64;
-#endif
-       ret = do_bootm_states(cmdtp, flag, argc, argv,
-#ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
-                             BOOTM_STATE_RAMDISK |
-#endif
-                             BOOTM_STATE_MEASURE |
-                             BOOTM_STATE_OS_PREP | BOOTM_STATE_OS_FAKE_GO |
-                             BOOTM_STATE_OS_GO,
-                             &images, 1);
+       if (IS_ENABLED(CONFIG_RISCV_SMODE))
+               images.os.arch = IH_ARCH_RISCV;
+       else if (IS_ENABLED(CONFIG_ARM64))
+               images.os.arch = IH_ARCH_ARM64;
+
+       states = BOOTM_STATE_MEASURE | BOOTM_STATE_OS_PREP |
+               BOOTM_STATE_OS_FAKE_GO | BOOTM_STATE_OS_GO;
+       if (IS_ENABLED(CONFIG_SYS_BOOT_RAMDISK_HIGH))
+               states |= BOOTM_STATE_RAMDISK;
+
+       ret = bootm_run_states(&bmi, states);
 
        return ret;
 }
This page took 0.028536 seconds and 4 git commands to generate.