* Richard Palethorpe: > +#define __SC_COMPAT_CAST(t, a) \ > + (__typeof(__builtin_choose_expr(__TYPE_IS_L(t), 0, 0U))) \ > + (unsigned int)a So this casts to int (triggering sign extension) if the type on the 64-bit kernel side is long? But not in other cases (unsigned long, pointer)? Just double-checking. Thanks, Florian