
On 08/24/2012 05:55 PM, Tom Rini wrote:
So, here's what I don't understand. On ARM, in general, we can't rely on the global data pointer register (r8) to be set to a useful value, so we do the above to ensure it points to something useful. Are you always able to rely on r2 it looks like pointing to something useful? Or do you take care of this much earlier on in powerpc? Thanks!
You are correct, I missed something here. r2 was still configured to the value written to it from the "real" U-Boot (pointing to internal SRAM).
I can't use the code in preloader_console_init() though to setup the gd pointer. As I need to write some values in gd *before* calling preloader_console_init() (mainly clocks for serial driver). And since this "gd stuff" is quite platform specific, we should probably move this into an platform/arch spl file instead. As you also mentioned in another reply to create an arch/${ARCH}/lib/spl.c file.
What do you think? Can you move this gd init stuff into such a common ARM spl file in the next patchset version?
Yes. We should probably say it's the job of board_init_f. I know full U-Boot does it at the start of board_init_r but I think for SPL it makes sense to document that board_init_f does any early init it needs to, clears BSS, sets up gd and calls board_init_r.
Full ack. In my next patchset version, I already extracted this gd setup into board_init_f().
Thanks, Stefan