On Sat, 23 May 2020, Mikulas Patocka wrote: > ... and I also broke the *_relaxed macros and didn't notice it, because > they are unused in my config. This won't compile, because mb() is a > statement, not a function. > > > > +#define readb_relaxed(addr) (mb(), __raw_readb(addr)) A statement expression would do though, e.g.: #define readb_relaxed(addr) ({ mb(); __raw_readb(addr); }) and might be preferable for code brevity to adding a zillion of inline functions. Maciej