]> git.sur5r.net Git - u-boot/commitdiff
riscv: bootm: Support to boot riscv-linux
authorRick Chen <rick@andestech.com>
Tue, 13 Mar 2018 06:48:33 +0000 (14:48 +0800)
committerAndes <uboot@andestech.com>
Fri, 30 Mar 2018 05:13:29 +0000 (13:13 +0800)
riscv-linux should use BBL (Berkeley bootloader) for
loading the Linux kernel.

U-Boot can play as FSBL(first stage bootloader)
to boot BBL and riscv-linux.

In BBL's init_first_hart(), it will pass dtb with a1.
So implement bootm to pass arguments to BBL correctly.

Signed-off-by: Rick Chen <rick@andestech.com>
Signed-off-by: Rick Chen <rickchen36@gmail.com>
arch/riscv/lib/bootm.c

index 3744073cfa105ef4baa7615d0466f73ff2cb86f3..545d629caa52c54a2ed98f534432fd8c5f049558 100644 (file)
@@ -46,7 +46,7 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
        bd_t    *bd = gd->bd;
        char    *s;
        int     machid = bd->bi_arch_number;
-       void    (*theKernel)(int zero, int arch, uint params);
+       void    (*theKernel)(int arch, uint params);
 
 #ifdef CONFIG_CMDLINE_TAG
        char *commandline = env_get("bootargs");
@@ -61,7 +61,7 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
        if ((flag != 0) && (flag != BOOTM_STATE_OS_GO))
                return 1;
 
-       theKernel = (void (*)(int, int, uint))images->ep;
+       theKernel = (void (*)(int, uint))images->ep;
 
        s = env_get("machid");
        if (s) {
@@ -120,9 +120,9 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
        }
        cleanup_before_linux();
        if (IMAGE_ENABLE_OF_LIBFDT && images->ft_len)
-               theKernel(0, machid, (unsigned long)images->ft_addr);
+               theKernel(machid, (unsigned long)images->ft_addr);
        else
-       theKernel(0, machid, bd->bi_boot_params);
+       theKernel(machid, bd->bi_boot_params);
        /* does not return */
 
        return 1;