summaryrefslogtreecommitdiff
path: root/arch/powerpc/lib/bootm.c
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2011-07-30 01:39:14 +0200
committerWolfgang Denk <wd@denx.de>2011-07-30 01:39:14 +0200
commitdd620b26332eb1e9fc0216760909c4046ba09745 (patch)
treedac488abee6a6768479629b2c1b2d904d0f9e309 /arch/powerpc/lib/bootm.c
parent84b5e8022ef62b68df360392a55c4fc2f2e568d7 (diff)
parent57567361769bfa02d0622c06e5e9f66392e2593a (diff)
Merge branch 'master' of /home/wd/git/u-boot/custodians
* 'master' of /home/wd/git/u-boot/custodians: powerpc/8xxx: Remove dependency on <usb.h> powerpc/85xx: enable USB2 gadget mode for corenet ds board powerpc/85xx: verify the device tree before booting Linux MPC8xxx: drop redundant boot messages powerpc/85xx: Fix build failure for P1023RDS powerpc/p2041rdb: Enable SATA support powerpc/85xx: Cleanup handling of PVR detection for e500/e500mc/e5500 powerpc/85xx: Fix up clock_freq property in CAN node of dts 85xx: enable FDT support for STX SSA board powerpc/85xx: provide 85xx flush_icache for cmd_cache powerpc/p2041rdb: Enable backside L2 cache support powerpc/85xx: Handle the lack of L2 cache on P2040/P2040E powerpc/85xx: Add support for P2041[e] XAUI in SERDES powerpc/85xx: Rename P2040 id & SERDES to P2041 powerpc/85xx: Adding configuration for DCSRCR to enable 32M access powerpc/85xx: Fix setting of EPAPR_MAGIC value
Diffstat (limited to 'arch/powerpc/lib/bootm.c')
-rw-r--r--arch/powerpc/lib/bootm.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/arch/powerpc/lib/bootm.c b/arch/powerpc/lib/bootm.c
index 4e0cb8f3bf5..137547451b3 100644
--- a/arch/powerpc/lib/bootm.c
+++ b/arch/powerpc/lib/bootm.c
@@ -87,7 +87,7 @@ static void boot_jump_linux(bootm_headers_t *images)
* r8: 0
* r9: 0
*/
-#if defined(CONFIG_85xx) || defined(CONFIG_440)
+#if defined(CONFIG_MPC85xx) || defined(CONFIG_440)
#define EPAPR_MAGIC (0x45504150)
#else
#define EPAPR_MAGIC (0x65504150)
@@ -226,6 +226,24 @@ static int boot_bd_t_linux(bootm_headers_t *images)
return ret;
}
+/*
+ * Verify the device tree.
+ *
+ * This function is called after all device tree fix-ups have been enacted,
+ * so that the final device tree can be verified. The definition of "verified"
+ * is up to the specific implementation. However, it generally means that the
+ * addresses of some of the devices in the device tree are compared with the
+ * actual addresses at which U-Boot has placed them.
+ *
+ * Returns 1 on success, 0 on failure. If 0 is returned, U-boot will halt the
+ * boot process.
+ */
+static int __ft_verify_fdt(void *fdt)
+{
+ return 1;
+}
+__attribute__((weak, alias("__ft_verify_fdt"))) int ft_verify_fdt(void *fdt);
+
static int boot_body_linux(bootm_headers_t *images)
{
ulong rd_len;
@@ -298,6 +316,9 @@ static int boot_body_linux(bootm_headers_t *images)
/* fixup the initrd now that we know where it should be */
if (*initrd_start && *initrd_end)
fdt_initrd(*of_flat_tree, *initrd_start, *initrd_end, 1);
+
+ if (!ft_verify_fdt(*of_flat_tree))
+ return -1;
}
#endif /* CONFIG_OF_LIBFDT */
return 0;