[U-Boot] [PATCH v2 26/63] x86: board_r: Set the global data pointer after relocation
Bin Meng
bmeng.cn at gmail.com
Wed Dec 28 04:31:03 CET 2016
Hi Simon,
On Sun, Nov 20, 2016 at 4:25 AM, Simon Glass <sjg at 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 <sjg at 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.cn at gmail.com>
Regards,
Bin
More information about the U-Boot
mailing list