+ char *of_flat_tree = NULL;
+#if defined(CONFIG_OF_LIBFDT)
+ /* did generic code already find a device tree? */
+ if (images->ft_len)
+ of_flat_tree = images->ft_addr;
+#endif
+
+ thekernel = (void (*)(char *, ulong, ulong))images->ep;
+
+ /* find ramdisk */
+ ret = boot_get_ramdisk(argc, argv, images, IH_ARCH_MICROBLAZE,
+ &rd_data_start, &rd_data_end);
+ if (ret)
+ return 1;
+
+ bootstage_mark(BOOTSTAGE_ID_RUN_OS);
+
+ if (!of_flat_tree && argc > 1)
+ of_flat_tree = (char *)simple_strtoul(argv[1], NULL, 16);
+
+ /* fixup the initrd now that we know where it should be */
+ if (images->rd_start && images->rd_end && of_flat_tree)
+ ret = fdt_initrd(of_flat_tree, images->rd_start,
+ images->rd_end);
+ if (ret)
+ return 1;