[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v6 17/24] qemu/bitops.h: add the bit ordering re
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH v6 17/24] qemu/bitops.h: add the bit ordering reversal functions stolen from linux |
Date: |
Wed, 06 Mar 2013 09:26:00 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130219 Thunderbird/17.0.3 |
Il 06/03/2013 08:27, Kuo-Jung Su ha scritto:
> Signed-off-by: Kuo-Jung Su <address@hidden>
> ---
> include/qemu/bitops.h | 63
> ++++++++++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 62 insertions(+), 1 deletion(-)
>
> diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h
> index affcc96..920d028 100644
> --- a/include/qemu/bitops.h
> +++ b/include/qemu/bitops.h
> @@ -3,7 +3,8 @@
> *
> * Copyright (C) 2010 Corentin Chary <address@hidden>
> *
> - * Mostly inspired by (stolen from) linux/bitmap.h and linux/bitops.h
> + * Mostly inspired by (stolen from) linux/bitmap.h, linux/bitops.h
> + * and linux/bitrev.h
> *
> * This work is licensed under the terms of the GNU LGPL, version 2.1 or
> later.
> * See the COPYING.LIB file in the top-level directory.
> @@ -273,4 +274,64 @@ static inline uint64_t deposit64(uint64_t value, int
> start, int length,
> return (value & ~mask) | ((fieldval << start) & mask);
> }
>
> +/**
> + * bitrev8:
> + * @value: the value to reverse bit ordering from
> + *
> + * Reverse the 8 bit input @value
> + *
> + * Returns: the input @value with reversed bit ordering
> + */
> +static inline uint8_t bitrev8(uint8_t value)
> +{
> + int i;
> + uint8_t ret = 0;
> + for (i = 0; i < 8; ++i) {
> + if (value & BIT(i)) {
> + ret |= BIT(7 - i);
> + }
> + }
Please use instead
value = ((value & 0xAA) >> 1) | ((value & 0x55) << 1);
value = ((value & 0xCC) >> 2) | ((value & 0x33) << 2);
value = ((value & 0xF0) >> 4) | ((value & 0x0F) << 4);
return value;
Paolo
> + return ret;
> +}
> +
> +/**
> + * bitrev16:
> + * @value: the value to reverse bit ordering from
> + *
> + * Reverse the 16 bit input @value
> + *
> + * Returns: the input @value with reversed bit ordering
> + */
> +static inline uint16_t bitrev16(uint16_t value)
> +{
> + return (bitrev8(value & 0xff) << 8) | bitrev8(value >> 8);
> +}
> +
> +/**
> + * bitrev32:
> + * @value: the value to reverse bit ordering from
> + *
> + * Reverse the 32 bit input @value
> + *
> + * Returns: the input @value with reversed bit ordering
> + */
> +static inline uint32_t bitrev32(uint32_t value)
> +{
> + return (bitrev16(value & 0xffff) << 16) | bitrev16(value >> 16);
> +}
> +
> +/**
> + * bitrev64:
> + * @value: the value to reverse bit ordering from
> + *
> + * Reverse the 64 bit input @value
> + *
> + * Returns: the input @value with reversed bit ordering
> + */
> +static inline uint64_t bitrev64(uint64_t value)
> +{
> + return ((uint64_t)bitrev32(value & 0xffffffffULL) << 32)
> + | (uint64_t)bitrev32(value >> 32);
> +}
> +
> #endif
>
- Re: [Qemu-devel] [PATCH v6 12/24] hw/nand.c: bug fix to erase operation, (continued)
[Qemu-devel] [PATCH v6 13/24] hw/arm: add Faraday FTNANDC021 nand flash controller support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 14/24] hw/arm: add Faraday FTI2C010 I2C controller support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 15/24] hw: add WM8731 codec support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 16/24] hw/arm: add Faraday FTSSP010 multi-function controller support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 17/24] qemu/bitops.h: add the bit ordering reversal functions stolen from linux, Kuo-Jung Su, 2013/03/06
- Re: [Qemu-devel] [PATCH v6 17/24] qemu/bitops.h: add the bit ordering reversal functions stolen from linux,
Paolo Bonzini <=
[Qemu-devel] [PATCH v6 18/24] hw/arm: add Faraday FTGMAC100 1Gbps ethernet support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 19/24] hw/arm: add Faraday FTLCDC200 LCD controller support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 20/24] hw/arm: add Faraday FTTSC010 touchscreen controller support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 21/24] hw/arm: add Faraday FTSDC010 MMC/SD controller support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 22/24] hw/arm: add Faraday FTMAC110 10/100Mbps ethernet support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 23/24] hw/arm: add Faraday FTTMR010 timer support, Kuo-Jung Su, 2013/03/06
[Qemu-devel] [PATCH v6 24/24] hw/arm: add Faraday FTSPI020 SPI flash controller support, Kuo-Jung Su, 2013/03/06