On Mon, May 26, 2025 at 11:10:33PM +0200, Rasmus Villemoes wrote:
> On Sun, May 25 2025, Tom Rini <tr...@konsulko.com> wrote:
> 
> > On Sun, May 25, 2025 at 10:07:56PM +0200, Rasmus Villemoes wrote:
> >> 
> >> :( so we've been relying on that prefetch() laundering away the
> >> volatile.
> >> 
> >> Which really begs the question: Why, exactly, is it that gd even has
> >> that volatile qualifier in the first place? 
> >
> > The answer is likely early 2000s GCC.
> >
> >> I'm 98% certain that we could drop that and get better code generation
> >> and avoid a ton of places where we cast away that volatile which
> >> shouldn't really be there anyway.
> >
> > It would be a good thing to experiment with now and maybe try for real
> > in a near-future merge window.
> 
> So since it's declared per architecture I just tried with arm for now,
> and this
> 
> diff --git a/arch/arm/include/asm/global_data.h 
> b/arch/arm/include/asm/global_data.h
> index 45401d5e3c8..f7a47204b7c 100644
> --- a/arch/arm/include/asm/global_data.h
> +++ b/arch/arm/include/asm/global_data.h
> @@ -133,9 +133,9 @@ static inline gd_t *get_gd(void)
>  #else
>  
>  #ifdef CONFIG_ARM64
> -#define DECLARE_GLOBAL_DATA_PTR                register volatile gd_t *gd 
> asm ("x18")
> +#define DECLARE_GLOBAL_DATA_PTR                register gd_t *gd asm ("x18")
>  #else
> -#define DECLARE_GLOBAL_DATA_PTR                register volatile gd_t *gd 
> asm ("r9")
> +#define DECLARE_GLOBAL_DATA_PTR                register gd_t *gd asm ("r9")
>  #endif
>  #endif
>  
> 
> builds, boots to linux, and passes our test suite on our
> beagleboneblack, imx7 SabreSD, RPi 3, RPi 4, RPi-cm4, wandboard,
> imx8mp-evk; i.e. a good mix of 32 and 64 bit arm.

That's a good set of datapoints, thanks. Do you want to post a real
series at some point or should I do it and Suggested-by you? Thanks.

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to