Question on FIELD_PREP() for static array

From: John Garry
Date: Wed Oct 10 2018 - 13:16:43 EST


(to: get_maintainers -f include/linux/bitfield.h)

Hi,

I would like to use FIELD_PREP() macro for assigning a static array, like this:
function()
{
static u32 val[2] = {FIELD_PREP(GENMASK_ULL(10, 0), 5), 0};

}

However the compiler complains of non-const expression:
./include/linux/bitfield.h:88:2: error: initializer element is not constant
({ \

Specifically it doesn't like the __BF_FIELD_CHECK() in FIELD_PREP().

Any ideas on compiler trickery we could do with the FIELD_PREP() definition to avoid this issue (i.e. enforce the check but only use the constant value)?

Thanks in advance,
John