diff --git a/arch/microblaze/lib/bootm.c b/arch/microblaze/lib/bootm.c
index b992a4ddef4073926ced4ae4dae1d1b5493463ab..38427090011b204cc4c09791a785a84fcfb3255a 100644
--- a/arch/microblaze/lib/bootm.c
+++ b/arch/microblaze/lib/bootm.c
@@ -64,6 +64,14 @@ int do_bootm_linux(int flag, int argc, char * const argv[],
 
 	if (!of_flat_tree && argc > 3)
 		of_flat_tree = (char *)simple_strtoul(argv[3], 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, 1);
+		if (ret)
+			return 1;
+
 #ifdef DEBUG
 	printf("## Transferring control to Linux (at address 0x%08lx) ",
 	       (ulong)thekernel);