On Thu, Jun 9, 2016 at 11:46 AM, Peter Maydell <peter.mayd...@linaro.org> wrote:
> 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)

Fixed both.

Thanks,

Alistair

>
> thanks
> -- PMM
>

Reply via email to