Re: [PATCH 01/13] compiler.h: Split {READ,WRITE}_ONCE definitions out into rwonce.h

From: Christian Borntraeger
Date: Mon Nov 11 2019 - 03:10:12 EST




On 08.11.19 20:57, Arnd Bergmann wrote:
> On Fri, Nov 8, 2019 at 6:01 PM Will Deacon <will@xxxxxxxxxx> wrote:
>>
>> In preparation for allowing architectures to define their own
>> implementation of the 'READ_ONCE()' macro, move the generic
>> '{READ,WRITE}_ONCE()' definitions out of the unwieldy 'linux/compiler.h'
>> and into a new 'rwonce.h' header under 'asm-generic'.
>
> Adding Christian BorntrÃger to Cc, he originally added the
> READ_ONCE()/WRITE_ONCE()
> code.
>
> I wonder if it would be appropriate now to revert back to a much simpler version
> of these helpers for any modern compiler. As I understand, only gcc-4.6 and
> gcc4.7 actually need the song-and-dance version with the union and switch/case,
> while for others, we can might be able back to a macro doing a volatile access.

As far as I know this particular issue with volatile access on aggregate types
was fixed in gcc 4.8. On the other hand we know that the current construct will
work on all compilers. Not so sure about the orignal ACCESS_ONCE implementation.