On Mon, 20 Jul 2026 at 06:39, Akihiko Odaki <[email protected]> wrote: > > Commit 9486aa387716 ("perf tools: Fix 64 bit integer format strings") > defined the tools-local u64 as uint64_t so that PRI*64 format macros > match its underlying C type. On architectures where uint64_t and __u64 > are distinct types, however, ____MAKE_OP() still gives the u64_* > helpers an __u64 interface. > > Teach ____MAKE_OP() to accept the helper name and storage type > separately. Keep endian helpers on __le* and __be*, and generate the > native helpers using the tools-local u* types. > > Assisted-by: Codex:gpt-5.6-sol > Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Fuad Tabba <[email protected]> Cheers, /fuad > --- > tools/include/linux/bitfield.h | 26 +++++++++++++------------- > 1 file changed, 13 insertions(+), 13 deletions(-) > > diff --git a/tools/include/linux/bitfield.h b/tools/include/linux/bitfield.h > index ddf81f24956b..1c633343d576 100644 > --- a/tools/include/linux/bitfield.h > +++ b/tools/include/linux/bitfield.h > @@ -142,32 +142,32 @@ static __always_inline u64 field_mask(u64 field) > return field / field_multiplier(field); > } > #define field_max(field) ((typeof(field))field_mask(field)) > -#define ____MAKE_OP(type,base,to,from) \ > -static __always_inline __##type type##_encode_bits(base v, base field) \ > +#define ____MAKE_OP(name,type,base,to,from) \ > +static __always_inline type name##_encode_bits(base v, base field) \ > { \ > if (__builtin_constant_p(v) && (v & ~field_mask(field))) \ > __field_overflow(); \ > return to((v & field_mask(field)) * field_multiplier(field)); \ > } \ > -static __always_inline __##type type##_replace_bits(__##type old, \ > - base val, base field) \ > +static __always_inline type name##_replace_bits(type old, \ > + base val, base field) \ > { \ > - return (old & ~to(field)) | type##_encode_bits(val, field); \ > + return (old & ~to(field)) | name##_encode_bits(val, field); \ > } \ > -static __always_inline void type##p_replace_bits(__##type *p, \ > +static __always_inline void name##p_replace_bits(type *p, \ > base val, base field) \ > { \ > - *p = (*p & ~to(field)) | type##_encode_bits(val, field); \ > + *p = (*p & ~to(field)) | name##_encode_bits(val, field); \ > } \ > -static __always_inline base type##_get_bits(__##type v, base field) \ > +static __always_inline base name##_get_bits(type v, base field) \ > { \ > return (from(v) & field)/field_multiplier(field); \ > } > -#define __MAKE_OP(size) > \ > - ____MAKE_OP(le##size,u##size,cpu_to_le##size,le##size##_to_cpu) \ > - ____MAKE_OP(be##size,u##size,cpu_to_be##size,be##size##_to_cpu) \ > - ____MAKE_OP(u##size,u##size,,) > -____MAKE_OP(u8,u8,,) > +#define __MAKE_OP(size) > \ > + > ____MAKE_OP(le##size,__le##size,u##size,cpu_to_le##size,le##size##_to_cpu) > \ > + > ____MAKE_OP(be##size,__be##size,u##size,cpu_to_be##size,be##size##_to_cpu) > \ > + ____MAKE_OP(u##size,u##size,u##size,,) > +____MAKE_OP(u8,u8,u8,,) > __MAKE_OP(16) > __MAKE_OP(32) > __MAKE_OP(64) > > -- > 2.55.0 > >

