Christian Borntraeger <borntraeger@xxxxxxxxxx> wrote: > +#define get_scalar_volatile_pointer(x) ({ \ > + typeof(x) *__p = &(x); \ > + volatile typeof(x) *__vp = __p; \ > + (void)(long)*__p; __vp; }) > +#define ACCESS_ONCE(x) (*get_scalar_volatile_pointer(x)) Might this cause two loads from memory under some conditions? Once for the fourth line and once for the fifth? (Apologies if this has already been discussed) David