On 12 May 2016 at 23:45, Alistair Francis <alistair.fran...@xilinx.com> wrote: > Add a macro that creates a 64bit value which has length number of ones > shifted acrros by the value of shift.
"across" > > Signed-off-by: Alistair Francis <alistair.fran...@xilinx.com> > Reviewed-by: Alex Bennée <alex.ben...@linaro.org> > --- > V5: > - Re-write to a 64-bit mask instead of ONES() > - Re-order this patch in the series > > include/qemu/bitops.h | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h > index 755fdd1..3c45791 100644 > --- a/include/qemu/bitops.h > +++ b/include/qemu/bitops.h > @@ -24,6 +24,9 @@ > #define BIT_WORD(nr) ((nr) / BITS_PER_LONG) > #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * > sizeof(long)) > > +#define MAKE_64BIT_MASK(shift, length) \ > + (((1ull << (length)) - 1) << shift) > + This is undefined behaviour for a 64-bit length. The expression we use in deposit64() to create a mask is ((~0ULL >> (64 - length)) << start) thanks -- PMM