#endif /* CONFIG_SWIOTLB */
 
+#ifdef CONFIG_USE_OF
+/**
+ * plat_get_fdt() - Return a pointer to the platform's device tree blob
+ *
+ * This function provides a platform independent API to get a pointer to the
+ * flattened device tree blob. The interface between bootloader and kernel
+ * is not consistent across platforms so it is necessary to provide this
+ * API such that common startup code can locate the FDT.
+ *
+ * This is used by the KASLR code to get command line arguments and random
+ * seed from the device tree. Any platform wishing to use KASLR should
+ * provide this API and select SYS_SUPPORTS_RELOCATABLE.
+ *
+ * Return: Pointer to the flattened device tree blob.
+ */
+extern void *plat_get_fdt(void);
+#endif /* CONFIG_USE_OF */
+
 #endif /* _ASM_BOOTINFO_H */
 
 #endif
 }
 
+void __init *plat_get_fdt(void)
+{
+       return (void *)__dtb_start;
+}
+
 void __init plat_mem_setup(void)
 {
        unsigned int i;
-       void *fdt = __dtb_start;
+       void *fdt = plat_get_fdt();
 
        fdt = malta_dt_shim(fdt);
        __dt_setup_arch(fdt);
 
        }
 }
 
+void __init *plat_get_fdt(void)
+{
+       return (void *)__dtb_start;
+}
+
 void __init plat_mem_setup(void)
 {
        /* allow command line/bootloader env to override memory size in DT */