|
@@ -52,6 +52,20 @@ void arch_lmb_reserve(struct lmb *lmb)
|
|
|
lmb_reserve(lmb, sp, CONFIG_SYS_SDRAM_BASE + gd->ram_size - sp);
|
|
|
}
|
|
|
|
|
|
+static int boot_setup_linux(bootm_headers_t *images)
|
|
|
+{
|
|
|
+ int ret;
|
|
|
+ ulong rd_len;
|
|
|
+
|
|
|
+ rd_len = images->rd_end - images->rd_start;
|
|
|
+ ret = boot_ramdisk_high(&images->lmb, images->rd_start,
|
|
|
+ rd_len, &images->initrd_start, &images->initrd_end);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
static void linux_cmdline_init(void)
|
|
|
{
|
|
|
linux_argc = 1;
|
|
@@ -224,6 +238,8 @@ static void boot_jump_linux(bootm_headers_t *images)
|
|
|
int do_bootm_linux(int flag, int argc, char * const argv[],
|
|
|
bootm_headers_t *images)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
/* No need for those on MIPS */
|
|
|
if (flag & BOOTM_STATE_OS_BD_T)
|
|
|
return -1;
|
|
@@ -243,6 +259,10 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+ ret = boot_setup_linux(images);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
+
|
|
|
boot_cmdline_linux(images);
|
|
|
boot_prep_linux(images);
|
|
|
boot_jump_linux(images);
|