Hi Simon, On Sun, Nov 20, 2016 at 4:25 AM, Simon Glass <s...@chromium.org> wrote: > Since 'gd' is just a normal variable on 64-bit x86, it is relocated by the > time we get to board_init_r(). The old 'gd' variable is passed in as > parameter to board_init_r(), presumably for this situation. > > Assign it on 64-bit x86 so that gd points to the correct data. > > Options to improve this: > - Make gd a fixed register and remove the board_init_r() parameter > - Make all archs use this board_init_r() parameter
Can you move these from commit message to a "TODO" part in the codes? > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > Changes in v2: None > > common/board_r.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/common/board_r.c b/common/board_r.c > index d959ad3..02800ca 100644 > --- a/common/board_r.c > +++ b/common/board_r.c > @@ -974,6 +974,11 @@ init_fnc_t init_sequence_r[] = { > > void board_init_r(gd_t *new_gd, ulong dest_addr) > { > + /* Set up the new global data pointer */ > +#if CONFIG_IS_ENABLED(X86_64) > + arch_setup_gd(new_gd); > +#endif > + > #ifdef CONFIG_NEEDS_MANUAL_RELOC > int i; > #endif > -- Reviewed-by: Bin Meng <bmeng...@gmail.com> Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot