Hi Simon, On 04/01/12 16:40, Simon Glass wrote: > Hi Graeme, > > On Sun, Jan 1, 2012 at 8:09 PM, Graeme Russ <graeme.r...@gmail.com> wrote: >> >> Signed-off-by: Graeme Russ <graeme.r...@gmail.com> >> --- >> arch/x86/lib/board.c | 15 ++++++++++----- >> 1 files changed, 10 insertions(+), 5 deletions(-) >> >> diff --git a/arch/x86/lib/board.c b/arch/x86/lib/board.c >> index ffddfbe..52e27e1 100644 >> --- a/arch/x86/lib/board.c >> +++ b/arch/x86/lib/board.c >> @@ -131,16 +131,11 @@ init_fnc_t *init_sequence_f[] = { >> console_init_f, >> dram_init_f, >> calculate_relocation_address, >> - copy_uboot_to_ram, >> - clear_bss, >> - do_elf_reloc_fixups, >> >> NULL, >> }; >> >> init_fnc_t *init_sequence_r[] = { >> - copy_gd_to_ram, >> - init_cache, >> cpu_init_r, /* basic cpu dependent setup */ >> board_early_init_r, /* basic board dependent setup */ >> dram_init, /* configure available RAM banks */ >> @@ -269,6 +264,16 @@ void board_init_f(ulong boot_flags) >> >> void board_init_f_r(void) >> { >> + if (copy_gd_to_ram() != 0) >> + hang(); >> + >> + if (init_cache() != 0) >> + hang(); >> + >> + copy_uboot_to_ram(); >> + clear_bss(); >> + do_elf_reloc_fixups(); > > Can you not just put these in the init list above? Why do they need to > move back into this functoin?
board_init_f_r() is the intermediate step when we are running from Flash, but with the stack and global data in RAM. If these functions are put in init_sequence_f() we cannot enable the CPU cache (as the stack and global data would get trashed). We can't put them in init_sequence_r because these are the functions that actually copy U-Boot to RAM (and hence must be done before init_sequence_r) Regards, Graeme _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot