In message <1202291955.25864.43.camel at gentoo-jocke.transmode.se> you wrote:
>> I think the register approach is needed if we ever want to
> make u-boot fully relocateable.
Good point.
> There are a few global data accesses that needs to be fixed
> before that can happen though. There should not be any global data
> accesses before relocate_code has done its thing. One of the
> first things that happens in board_init_f is:
> for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
> if ((*init_fnc_ptr) () != 0) {
> hang ();
> }
> }
> init_sequence is a global variable.
>> Is this table really needed? Why not move it inside board_init_f and
> save some bytes?
The original idea of the table was that a user could provide (in his
board config file) a private version to allow for easy, #ifdef free
board specific initialization sequences.
Unfortunately I never found the time or resources to complete this.
> The next is access is env_get_char, this probably needs to move into GD.
>> I figured global data accesses wasn't allowed(other than GD) at all
> before relocate_code()?
They are not exactly forbidden, you just have to know exactly what you
can expect - i. e., usually they just don't make much sense ;-)
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
"I refuse to have a battle of wits with an unarmed person."