[PATCH 1/3] riscv: define function set_gd()

Sean Anderson seanga2 at gmail.com
Thu Sep 10 13:04:37 CEST 2020


On 9/10/20 7:00 AM, Heinrich Schuchardt wrote:
> Function set_gd() is needed in the UEFI sub-system if the global data
> pointer is stored in a register.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
>  arch/riscv/include/asm/global_data.h | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/arch/riscv/include/asm/global_data.h b/arch/riscv/include/asm/global_data.h
> index 2eb14815bc..b711fcc44d 100644
> --- a/arch/riscv/include/asm/global_data.h
> +++ b/arch/riscv/include/asm/global_data.h
> @@ -39,4 +39,13 @@ struct arch_global_data {
> 
>  #define DECLARE_GLOBAL_DATA_PTR register gd_t *gd asm ("gp")
> 
> +static inline void set_gd(volatile gd_t *gd_ptr)
> +{
> +#ifdef CONFIG_64BIT
> +	asm volatile("ld gp, %0\n" : : "m"(gd_ptr));
> +#else
> +	asm volatile("lw gp, %0\n" : : "m"(gd_ptr));
> +#endif
> +}
> +
>  #endif /* __ASM_GBL_DATA_H */
> --
> 2.28.0
> 

Can't we just use arch_setup_gd?

--Sean


More information about the U-Boot mailing list