[PATCH 2/6] x86: Move work-around out of cpu_jump_to_64bit_uboot()
Bin Meng
bmeng.cn at gmail.com
Thu Apr 23 11:16:49 CEST 2020
Hi Simon,
On Mon, Apr 6, 2020 at 7:22 AM Simon Glass <sjg at chromium.org> wrote:
>
> At present this function copies U-Boot from the last 1MB of ROM. This is
> not the right way to do it. Instead, the binman symbol should provide the
> location.
>
> But in any case the code should live in the caller,
> spl_board_load_image(), so that the 64-bit jump function can be used
> elsewhere. Move it.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> arch/x86/cpu/i386/cpu.c | 10 ----------
> arch/x86/lib/spl.c | 13 +++++++++++++
> 2 files changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/arch/x86/cpu/i386/cpu.c b/arch/x86/cpu/i386/cpu.c
> index c8da7f10e9b..45416a9be5b 100644
> --- a/arch/x86/cpu/i386/cpu.c
> +++ b/arch/x86/cpu/i386/cpu.c
> @@ -611,16 +611,6 @@ int cpu_jump_to_64bit_uboot(ulong target)
>
> func = (func_t)ptr;
>
> - /*
> - * Copy U-Boot from ROM
> - * TODO(sjg at chromium.org): Figure out a way to get the text base
> - * correctly here, and in the device-tree binman definition.
> - *
> - * Also consider using FIT so we get the correct image length and
> - * parameters.
> - */
> - memcpy((char *)target, (char *)0xfff00000, 0x100000);
> -
> /* Jump to U-Boot */
> func((ulong)pgtable, 0, (ulong)target);
>
> diff --git a/arch/x86/lib/spl.c b/arch/x86/lib/spl.c
> index 90baec2a175..95a89c072d5 100644
> --- a/arch/x86/lib/spl.c
> +++ b/arch/x86/lib/spl.c
> @@ -207,6 +207,19 @@ static int spl_board_load_image(struct spl_image_info *spl_image,
> spl_image->os = IH_OS_U_BOOT;
> spl_image->name = "U-Boot";
>
> + if (!IS_ENABLED(CONFIG_SYS_COREBOOT)) {
For the coreboot case, where does it load the image then?
> + /*
> + * Copy U-Boot from ROM
> + * TODO(sjg at chromium.org): Figure out a way to get the text base
> + * correctly here, and in the device-tree binman definition.
> + *
> + * Also consider using FIT so we get the correct image length
> + * and parameters.
> + */
> + memcpy((char *)spl_image->load_addr, (char *)0xfff00000,
> + 0x100000);
> + }
> +
> debug("Loading to %lx\n", spl_image->load_addr);
>
> return 0;
> --
Regards,
Bin
More information about the U-Boot
mailing list