[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 08/16] bitops: Add ONES macro
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH v4 08/16] bitops: Add ONES macro |
Date: |
Mon, 29 Feb 2016 11:51:29 +0000 |
User-agent: |
mu4e 0.9.17; emacs 25.0.91.4 |
Alistair Francis <address@hidden> writes:
> From: Peter Crosthwaite <address@hidden>
>
> Little macro that just gives you N ones (justified to LSB).
>
> Signed-off-by: Peter Crosthwaite <address@hidden>
> Signed-off-by: Alistair Francis <address@hidden>
> ---
>
> include/qemu/bitops.h | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h
> index 8164225..27bf98d 100644
> --- a/include/qemu/bitops.h
> +++ b/include/qemu/bitops.h
> @@ -430,4 +430,6 @@ static inline uint64_t deposit64(uint64_t value, int
> start, int length,
> return (value & ~mask) | ((fieldval << start) & mask);
> }
>
> +#define ONES(num) ((num) == 64 ? ~0ull : (1ull << (num)) - 1)
> +
I'm a little ambivalent about this one. The definition should probably
be up at the top of the file with the other #defines. I don't like the
name as it is a little too generic. I also notice in all the actual uses
you immediately invert the result because you want to mask the top bits.
I suspect what's needed here is a more generic helper:
#define MAKE_64BIT_MASK (shift, length) \
...
And then the:
.ro = ~ONES(27) },
Becomes:
.ro = MAKE_64BIT_MASK(27, 64 - 27);
> #endif
--
Alex Bennée
- [Qemu-devel] [PATCH v4 02/16] register: Add Register API, (continued)
- [Qemu-devel] [PATCH v4 02/16] register: Add Register API, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 03/16] register: Add Memory API glue, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 04/16] register: Add support for decoding information, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 06/16] register: QOMify, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 05/16] register: Define REG and FIELD macros, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 07/16] register: Add block initialise helper, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 08/16] bitops: Add ONES macro, Alistair Francis, 2016/02/09
- Re: [Qemu-devel] [PATCH v4 08/16] bitops: Add ONES macro,
Alex Bennée <=
- [Qemu-devel] [PATCH v4 11/16] qdev: Define qdev_get_gpio_out, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 09/16] dma: Add Xilinx Zynq devcfg device model, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 13/16] irq: Add opaque setter routine, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 12/16] qdev: Add qdev_pass_all_gpios API, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 14/16] register: Add GPIO API, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 15/16] misc: Introduce ZynqMP IOU SLCR, Alistair Francis, 2016/02/09
- [Qemu-devel] [PATCH v4 16/16] xlnx-zynqmp: Connect the ZynqMP IOU SLCR, Alistair Francis, 2016/02/09
- Re: [Qemu-devel] [PATCH v4 00/16] data-driven device registers, Alex Bennée, 2016/02/26