diff options
Diffstat (limited to 'arch/powerpc/lib')
| -rw-r--r-- | arch/powerpc/lib/board.c | 18 | 
1 files changed, 15 insertions, 3 deletions
| diff --git a/arch/powerpc/lib/board.c b/arch/powerpc/lib/board.c index fea310eed..07feaf55f 100644 --- a/arch/powerpc/lib/board.c +++ b/arch/powerpc/lib/board.c @@ -345,6 +345,13 @@ ulong get_effective_memsize(void)  #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. @@ -521,9 +528,8 @@ void board_init_f(ulong bootflag)  	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);  	/* @@ -647,6 +653,12 @@ void board_init_r(gd_t *id, ulong dest_addr)  	 * 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 |