From: York Sun <yorksun@freescale.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v7 02/21] include: Add generic bitops headers
Date: Tue, 1 Dec 2015 09:26:59 -0800 [thread overview]
Message-ID: <565DD863.5010703@freescale.com> (raw)
In-Reply-To: <1446734622-5100-2-git-send-email-fabio.estevam@freescale.com>
On 11/05/2015 06:43 AM, Fabio Estevam wrote:
> Use the generic bitops header files from the kernel.
>
> Imported from kernel 4.2.3.
>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>
> ---
> Changes since v6:
> - Do not touch include/linux/bitops here to avoid build warnings (Daniel)
>
> include/asm-generic/bitops/__ffs.h | 43 ++++++++++++++++++++++++++++++++++++++
> include/asm-generic/bitops/__fls.h | 43 ++++++++++++++++++++++++++++++++++++++
> include/asm-generic/bitops/fls.h | 41 ++++++++++++++++++++++++++++++++++++
> include/asm-generic/bitops/fls64.h | 36 +++++++++++++++++++++++++++++++
> 4 files changed, 163 insertions(+)
> create mode 100644 include/asm-generic/bitops/__ffs.h
> create mode 100644 include/asm-generic/bitops/__fls.h
> create mode 100644 include/asm-generic/bitops/fls.h
> create mode 100644 include/asm-generic/bitops/fls64.h
>
<snip>
> diff --git a/include/asm-generic/bitops/__fls.h b/include/asm-generic/bitops/__fls.h
> new file mode 100644
> index 0000000..a60a7cc
> --- /dev/null
> +++ b/include/asm-generic/bitops/__fls.h
> @@ -0,0 +1,43 @@
> +#ifndef _ASM_GENERIC_BITOPS___FLS_H_
> +#define _ASM_GENERIC_BITOPS___FLS_H_
> +
> +#include <asm/types.h>
> +
> +/**
> + * __fls - find last (most-significant) set bit in a long word
> + * @word: the word to search
> + *
> + * Undefined if no set bit exists, so code should check against 0 first.
> + */
> +static __always_inline unsigned long __fls(unsigned long word)
> +{
> + int num = BITS_PER_LONG - 1;
> +
> +#if BITS_PER_LONG == 64
> + if (!(word & (~0ul << 32))) {
> + num -= 32;
> + word <<= 32;
> + }
> +#endif
> + if (!(word & (~0ul << (BITS_PER_LONG-16)))) {
> + num -= 16;
> + word <<= 16;
> + }
> + if (!(word & (~0ul << (BITS_PER_LONG-8)))) {
> + num -= 8;
> + word <<= 8;
> + }
> + if (!(word & (~0ul << (BITS_PER_LONG-4)))) {
> + num -= 4;
> + word <<= 4;
> + }
> + if (!(word & (~0ul << (BITS_PER_LONG-2)))) {
> + num -= 2;
> + word <<= 2;
> + }
> + if (!(word & (~0ul << (BITS_PER_LONG-1))))
> + num -= 1;
> + return num;
> +}
Sorry for catching this late. All above left shift causes compiling warning on
32-bit host (ubuntu 12.04 with gcc 4.6.3)
include/asm-generic/bitops/__fls.h:17:2: warning: left shift count >= width of
type [enabled by default]
The root cause may be in include/configs/sandbox.h
#define CONFIG_SANDBOX_BITS_PER_LONG 64
York
next prev parent reply other threads:[~2015-12-01 17:26 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-05 14:43 [U-Boot] [PATCH v7 01/21] include: Add log2 header from the kernel Fabio Estevam
2015-11-05 14:43 ` [U-Boot] [PATCH v7 02/21] include: Add generic bitops headers Fabio Estevam
2015-11-06 12:22 ` Tom Rini
2015-12-01 17:26 ` York Sun [this message]
2015-12-01 20:01 ` Simon Glass
2015-11-05 14:43 ` [U-Boot] [PATCH v7 03/21] ARM: Use the " Fabio Estevam
2015-11-06 12:22 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 04/21] x86: " Fabio Estevam
2015-11-06 12:22 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 05/21] m68k: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 06/21] blackfin: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 07/21] sh: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 08/21] microblaze: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 09/21] sandbox: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 10/21] sparc: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 11/21] openrisc: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 12/21] nds32: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 13/21] nios2: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 14/21] mips: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 15/21] arc: " Fabio Estevam
2015-11-06 12:23 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 16/21] avr32: " Fabio Estevam
2015-11-06 12:24 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 17/21] bitops: Add fls_long and __ffs64 Fabio Estevam
2015-11-06 12:24 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 18/21] compat: Remove is_power_of_2() definition Fabio Estevam
2015-11-06 12:24 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 19/21] powerpc: Remove __ilog2_u64 and ffs4 from bitops Fabio Estevam
2015-11-06 12:24 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 20/21] sf: Add SPI protection mechanism from the kernel Fabio Estevam
2015-11-06 12:24 ` Tom Rini
2015-11-05 14:43 ` [U-Boot] [PATCH v7 21/21] sf: Add SPI NOR protection mechanism Fabio Estevam
2015-11-06 12:24 ` Tom Rini
2015-11-11 0:09 ` Simon Glass
2015-11-11 0:29 ` Tom Rini
2015-11-11 0:51 ` Fabio Estevam
2015-11-11 2:56 ` Simon Glass
2015-11-11 9:43 ` Fabio Estevam
2015-11-11 16:25 ` Jagan Teki
2015-11-13 9:20 ` Bin Meng
2015-11-11 14:04 ` Fabio Estevam
2015-11-13 10:41 ` Bin Meng
2015-11-16 1:34 ` Simon Glass
2015-11-16 1:58 ` Tom Rini
2015-11-16 21:07 ` Simon Glass
2015-11-17 6:43 ` Jagan Teki
2015-11-16 20:57 ` Fabio Estevam
2015-11-05 15:51 ` [U-Boot] [PATCH v7 01/21] include: Add log2 header from the kernel Tom Rini
2015-11-05 15:51 ` Fabio Estevam
2015-11-05 16:35 ` Tom Rini
2015-11-05 17:53 ` Fabio Estevam
2015-11-05 19:10 ` Tom Rini
2015-11-05 20:07 ` Fabio Estevam
2015-11-06 1:40 ` Tom Rini
2015-11-06 11:08 ` Fabio Estevam
2015-11-06 12:22 ` Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=565DD863.5010703@freescale.com \
--to=yorksun@freescale.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox