[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 01/13] bitops: Add MAKE_64BIT_MASK macro
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v6 01/13] bitops: Add MAKE_64BIT_MASK macro |
Date: |
Thu, 9 Jun 2016 19:46:17 +0100 |
On 12 May 2016 at 23:45, Alistair Francis <address@hidden> 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 <address@hidden>
> Reviewed-by: Alex Bennée <address@hidden>
> ---
> 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
- Re: [Qemu-devel] [PATCH v6 01/13] bitops: Add MAKE_64BIT_MASK macro,
Peter Maydell <=