lkml.org 
[lkml]   [2019]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 092/241] tools include: Adopt linux/bits.h
    Date
    From: Arnaldo Carvalho de Melo <acme@redhat.com>

    commit ba4aa02b417f08a0bee5e7b8ed70cac788a7c854 upstream.

    So that we reduce the difference of tools/include/linux/bitops.h to the
    original kernel file, include/linux/bitops.h, trying to remove the need
    to define BITS_PER_LONG, to avoid clashes with asm/bitsperlong.h.

    And the things removed from tools/include/linux/bitops.h are really in
    linux/bits.h, so that we can have a copy and then
    tools/perf/check_headers.sh will tell us when new stuff gets added to
    linux/bits.h so that we can check if it is useful and if any adjustment
    needs to be done to the tools/{include,arch}/ copies.

    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexander Sverdlin <alexander.sverdlin@nokia.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: https://lkml.kernel.org/n/tip-y1sqyydvfzo0bjjoj4zsl562@git.kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    [bwh: Backported to 4.4 as dependency of "x86/msr-index: Cleanup bit defines":
    - Drop change in check-headers.sh
    - Adjust context]
    Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    tools/include/linux/bitops.h | 7 ++-----
    tools/include/linux/bits.h | 26 ++++++++++++++++++++++++++
    2 files changed, 28 insertions(+), 5 deletions(-)
    create mode 100644 tools/include/linux/bits.h

    --- a/tools/include/linux/bitops.h
    +++ b/tools/include/linux/bitops.h
    @@ -3,17 +3,14 @@

    #include <asm/types.h>
    #include <linux/kernel.h>
    -#include <linux/compiler.h>
    -
    #ifndef __WORDSIZE
    #define __WORDSIZE (__SIZEOF_LONG__ * 8)
    #endif

    #define BITS_PER_LONG __WORDSIZE
    +#include <linux/bits.h>
    +#include <linux/compiler.h>

    -#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
    -#define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
    -#define BITS_PER_BYTE 8
    #define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
    #define BITS_TO_U64(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u64))
    #define BITS_TO_U32(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(u32))
    --- /dev/null
    +++ b/tools/include/linux/bits.h
    @@ -0,0 +1,26 @@
    +/* SPDX-License-Identifier: GPL-2.0 */
    +#ifndef __LINUX_BITS_H
    +#define __LINUX_BITS_H
    +#include <asm/bitsperlong.h>
    +
    +#define BIT(nr) (1UL << (nr))
    +#define BIT_ULL(nr) (1ULL << (nr))
    +#define BIT_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
    +#define BIT_WORD(nr) ((nr) / BITS_PER_LONG)
    +#define BIT_ULL_MASK(nr) (1ULL << ((nr) % BITS_PER_LONG_LONG))
    +#define BIT_ULL_WORD(nr) ((nr) / BITS_PER_LONG_LONG)
    +#define BITS_PER_BYTE 8
    +
    +/*
    + * Create a contiguous bitmask starting at bit position @l and ending at
    + * position @h. For example
    + * GENMASK_ULL(39, 21) gives us the 64bit vector 0x000000ffffe00000.
    + */
    +#define GENMASK(h, l) \
    + (((~0UL) - (1UL << (l)) + 1) & (~0UL >> (BITS_PER_LONG - 1 - (h))))
    +
    +#define GENMASK_ULL(h, l) \
    + (((~0ULL) - (1ULL << (l)) + 1) & \
    + (~0ULL >> (BITS_PER_LONG_LONG - 1 - (h))))
    +
    +#endif /* __LINUX_BITS_H */

    \
     
     \ /
      Last update: 2019-06-09 19:01    [W:3.739 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site