Re: [PATCH v2 3/9] bitops: Introduce a more generic BITMASK macro

Joe Perches
2013-10-17T08:32:38Z

On Thu, 2013-10-17 at 03:38 -0400, Chen Gong wrote:
> the point is we can use GENMASK like GENMASK(end_bit, start_bit) but
> we don't know the value of end_bit/start_bit at compile-time.

True.

The BUILD_BUG_ON idea is just to avoid people using
GENMASK(1, 2)
instead of
GENMASK(2, 1)

#define GENMASK(h, l) \
({ \
BUILD_BUG_ON(__builtin_constant_p(l) && \
__builtin_constant_p(h) && \
(l) > (h)); \
(((U32_C(1) << ((h) - (l) + 1)) - 1) << (l)); \
})