#endif
#if defined(CONFIG_OF_LIBFDT)
-#include <fdt.h>
#include <libfdt.h>
#include <fdt_support.h>
#endif
return CMD_RET_USAGE;
}
- if (images.state >= state) {
+ if (images.state < BOOTM_STATE_START ||
+ images.state >= state) {
printf("Trying to execute a command out of order\n");
return CMD_RET_USAGE;
}
}
break;
#endif
-#if defined(CONFIG_OF_LIBFDT)
+#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_LMB)
case BOOTM_STATE_FDT:
{
boot_fdt_add_mem_rsv_regions(&images.lmb,
#ifdef CONFIG_NEEDS_MANUAL_RELOC
static int relocated = 0;
- /* relocate boot function table */
if (!relocated) {
int i;
+
+ /* relocate boot function table */
for (i = 0; i < ARRAY_SIZE(boot_os); i++)
if (boot_os[i] != NULL)
boot_os[i] += gd->reloc_off;
+
+ /* relocate names of sub-command table */
+ for (i = 0; i < ARRAY_SIZE(cmd_bootm_sub); i++)
+ cmd_bootm_sub[i].name += gd->reloc_off;
+
relocated = 1;
}
#endif