+static int boot_reloc_ramdisk(bootm_headers_t *images)
+{
+ ulong rd_len = images->rd_end - images->rd_start;
+
+ /*
+ * In case of legacy uImage's, relocation of ramdisk is already done
+ * by do_bootm_states() and should not repeated in 'bootm prep'.
+ */
+ if (images->state & BOOTM_STATE_RAMDISK) {
+ debug("## Ramdisk already relocated\n");
+ return 0;
+ }
+
+ return boot_ramdisk_high(&images->lmb, images->rd_start,
+ rd_len, &images->initrd_start, &images->initrd_end);
+}
+
+static int boot_reloc_fdt(bootm_headers_t *images)
+{
+ /*
+ * In case of legacy uImage's, relocation of FDT is already done
+ * by do_bootm_states() and should not repeated in 'bootm prep'.
+ */
+ if (images->state & BOOTM_STATE_FDT) {
+ debug("## FDT already relocated\n");
+ return 0;
+ }
+
+#if CONFIG_IS_ENABLED(MIPS_BOOT_FDT) && CONFIG_IS_ENABLED(OF_LIBFDT)
+ boot_fdt_add_mem_rsv_regions(&images->lmb, images->ft_addr);
+ return boot_relocate_fdt(&images->lmb, &images->ft_addr,
+ &images->ft_len);
+#else
+ return 0;
+#endif
+}
+
+#if CONFIG_IS_ENABLED(MIPS_BOOT_FDT) && CONFIG_IS_ENABLED(OF_LIBFDT)
+int arch_fixup_fdt(void *blob)
+{
+ u64 mem_start = virt_to_phys((void *)gd->bd->bi_memstart);
+ u64 mem_size = gd->ram_size;
+
+ return fdt_fixup_memory_banks(blob, &mem_start, &mem_size, 1);
+}
+#endif
+
+static int boot_setup_fdt(bootm_headers_t *images)
+{
+ return image_setup_libfdt(images, images->ft_addr, images->ft_len,
+ &images->lmb);
+}
+