On 12.10.2023 17:28, Nicola Vetrini wrote: > --- a/automation/eclair_analysis/ECLAIR/deviations.ecl > +++ b/automation/eclair_analysis/ECLAIR/deviations.ecl > @@ -274,6 +274,12 @@ still non-negative." > -config=MC3R1.R10.1,etypes+={safe, > "stmt(operator(logical)||node(conditional_operator||binary_conditional_operator))", > "dst_type(ebool||boolean)"} > -doc_end > > +-doc_begin="The macro LOWEST_BIT encapsulates a well-known pattern to obtain > the value > +2^ffs(x) for unsigned integers on two's complement architectures > +(all the architectures supported by Xen satisfy this requirement)." > +-config=MC3R1.R10.1,reports+={safe, > "any_area(any_loc(any_exp(macro(^LOWEST_BIT$))))"} > +-doc_end
Why is this added here rather than by ... > --- a/xen/include/xen/macros.h > +++ b/xen/include/xen/macros.h > @@ -8,8 +8,10 @@ > #define DIV_ROUND(n, d) (((n) + (d) / 2) / (d)) > #define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) > > -#define MASK_EXTR(v, m) (((v) & (m)) / ((m) & -(m))) > -#define MASK_INSR(v, m) (((v) * ((m) & -(m))) & (m)) a SAF-<n>-safe comment here? > +#define LOWEST_BIT(x) ((x) & -(x)) Personally I consider the name misleading: I'd expect a macro of this name to return a bit number, not a mask with a single bit set. No good, reasonably short name comes to mind - ISOLATE_LOW_BIT() is too long for my taste. Jan