#endif
}
+int __fixup_cpu(void)
+{
+ return 0;
+}
+
+int fixup_cpu(void) __attribute__((weak, alias("__fixup_cpu")));
+
/*
* This is the first part of the initialization sequence that is
* implemented in C, but still running from ROM.
* We need to make sure the location we intend to put secondary core
* boot code is reserved and not used by any part of u-boot
*/
- if (addr > determine_mp_bootpg()) {
- addr = determine_mp_bootpg();
+ if (addr > determine_mp_bootpg(NULL)) {
+ addr = determine_mp_bootpg(NULL);
debug("Reserving MP boot page to %08lx\n", addr);
}
#endif
addr_sp -= 16;
addr_sp &= ~0xF;
s = (ulong *) addr_sp;
- *s-- = 0;
- *s-- = 0;
- addr_sp = (ulong) s;
+ *s = 0; /* Terminate back chain */
+ *++s = 0; /* NULL return address */
debug("Stack Pointer at: %08lx\n", addr_sp);
/*
* We need to update it to point to the same CPU entry in RAM.
*/
gd->cpu += dest_addr - CONFIG_SYS_MONITOR_BASE;
+
+ /*
+ * If we didn't know the cpu mask & # cores, we can save them of
+ * now rather than 'computing' them constantly
+ */
+ fixup_cpu();
#endif
#ifdef CONFIG_SYS_EXTRA_ENV_RELOC
gd->env_addr += dest_addr - CONFIG_SYS_MONITOR_BASE;
#endif
-#ifdef CONFIG_SERIAL_MULTI
serial_initialize();
-#endif
debug("Now running in RAM - U-Boot at: %08lx\n", dest_addr);
#endif
#endif /* CONFIG_CMD_NET */
- /* IP Address */
- bd->bi_ip_addr = getenv_IPaddr("ipaddr");
-
WATCHDOG_RESET();
#if defined(CONFIG_PCI) && !defined(CONFIG_SYS_EARLY_PCI_INIT)
/* Initialize from environment */
load_addr = getenv_ulong("loadaddr", 16, load_addr);
-#if defined(CONFIG_CMD_NET)
- {
- char *s = getenv("bootfile");
-
- if (s != NULL)
- copy_filename(BootFile, s, sizeof(BootFile));
- }
-#endif
WATCHDOG_RESET();
*/
{
ulong pram = 0;
- uchar memsz[32];
+ char memsz[32];
#ifdef CONFIG_PRAM
pram = getenv_ulong("pram", 10, CONFIG_PRAM);
pram += (LOGBUFF_LEN + LOGBUFF_OVERHEAD) / 1024;
#endif
#endif
- sprintf((char *) memsz, "%ldk",
- (bd->bi_memsize / 1024) - pram);
- setenv("mem", (char *) memsz);
+ sprintf(memsz, "%ldk", (bd->bi_memsize / 1024) - pram);
+ setenv("mem", memsz);
}
#endif
void hang(void)
{
puts("### ERROR ### Please RESET the board ###\n");
- show_boot_progress(-30);
+ bootstage_error(BOOTSTAGE_ID_NEED_RESET);
for (;;)
;
}