From: Xiang W <wxjstz@126.com>
To: opensbi@lists.infradead.org
Subject: [PATCH] lib: fix compilation when strings.h is included
Date: Tue, 25 Jan 2022 22:49:30 +0800 [thread overview]
Message-ID: <72d43ccb49893edf0d55bbfdfd851966606bb05b.camel@126.com> (raw)
In-Reply-To: <20220124122220.186385-1-petro.karashchenko@gmail.com>
? 2022-01-24???? 14:22 +0200?Petro Karashchenko???
> In a systems that provide strings.h and it is included
> together with sbi_bitops.h the compilation error appears.
> The ffs() and fls() are provided by strings.h
>
> Signed-off-by: Petro Karashchenko <petro.karashchenko@gmail.com>
look good to me.
Reviewed-by: Xiang W <wxjstz@126.com>
> ---
> ?include/sbi/sbi_bitops.h??????? | 24 ++++++++++++------------
> ?lib/sbi/sbi_bitops.c??????????? | 10 +++++-----
> ?lib/sbi/sbi_hart.c????????????? |? 6 +++---
> ?lib/sbi/sbi_pmu.c?????????????? |? 6 +++---
> ?lib/utils/timer/aclint_mtimer.c |? 2 +-
> ?5 files changed, 24 insertions(+), 24 deletions(-)
>
> diff --git a/include/sbi/sbi_bitops.h b/include/sbi/sbi_bitops.h
> index 879430d..92ea449 100644
> --- a/include/sbi/sbi_bitops.h
> +++ b/include/sbi/sbi_bitops.h
> @@ -37,14 +37,14 @@
> ????????(((~0UL) - (1UL << (l)) + 1) & (~0UL >> (BITS_PER_LONG - 1 -
> (h))))
> ?
> ?/**
> - * ffs - Find first bit set
> + * __ffs - Find first bit set
> ? * @x: the word to search
> ? *
> ? * This is defined the same way as
> ? * the libc and compiler builtin ffs routines, therefore
> ? * differs in spirit from the above ffz (man ffs).
> ? */
> -static inline int ffs(int x)
> +static inline int __ffs(int x)
> ?{
> ????????int r = 1;
> ?
> @@ -72,12 +72,12 @@ static inline int ffs(int x)
> ?}
> ?
> ?/**
> - * __ffs - find first bit in word.
> + * __ffsl - find first bit in word.
> ? * @word: The word to search
> ? *
> ? * Undefined if no bit exists, so code should check against 0 first.
> ? */
> -static inline int __ffs(unsigned long word)
> +static inline int __ffsl(unsigned long word)
> ?{
> ????????int num = 0;
> ?
> @@ -109,22 +109,22 @@ static inline int __ffs(unsigned long word)
> ?}
> ?
> ?/*
> - * ffz - find first zero in word.
> + * __ffz - find first zero in word.
> ? * @word: The word to search
> ? *
> ? * Undefined if no zero exists, so code should check against ~0UL
> first.
> ? */
> -#define ffz(x) __ffs(~(x))
> +#define __ffz(x) __ffsl(~(x))
> ?
> ?/**
> - * fls - find last (most-significant) bit set
> + * __fls - find last (most-significant) bit set
> ? * @x: the word to search
> ? *
> - * This is defined the same way as ffs.
> - * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
> + * This is defined the same way as __ffs.
> + * Note __fls(0) = 0, __fls(1) = 1, __fls(0x80000000) = 32.
> ? */
> ?
> -static inline int fls(int x)
> +static inline int __fls(int x)
> ?{
> ????????int r = 32;
> ?
> @@ -152,12 +152,12 @@ static inline int fls(int x)
> ?}
> ?
> ?/**
> - * __fls - find last (most-significant) set bit in a long word
> + * __flsl - 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 inline unsigned long __fls(unsigned long word)
> +static inline unsigned long __flsl(unsigned long word)
> ?{
> ????????int num = BITS_PER_LONG - 1;
> ?
> diff --git a/lib/sbi/sbi_bitops.c b/lib/sbi/sbi_bitops.c
> index de9d045..2e2860d 100644
> --- a/lib/sbi/sbi_bitops.c
> +++ b/lib/sbi/sbi_bitops.c
> @@ -39,7 +39,7 @@ unsigned long find_first_bit(const unsigned long
> *addr,
> ????????if (tmp == 0UL)?????????/* Are any bits set? */
> ????????????????return result + size;???/* Nope. */
> ?found:
> -???????return result + __ffs(tmp);
> +???????return result + __ffsl(tmp);
> ?}
> ?
> ?/**
> @@ -69,7 +69,7 @@ unsigned long find_first_zero_bit(const unsigned
> long *addr,
> ????????if (tmp == ~0UL)????????/* Are any bits zero? */
> ????????????????return result + size;???/* Nope. */
> ?found:
> -???????return result + ffz(tmp);
> +???????return result + __ffz(tmp);
> ?}
> ?
> ?/**
> @@ -100,7 +100,7 @@ unsigned long find_last_bit(const unsigned long
> *addr,
> ????????????????tmp = addr[--words];
> ????????????????if (tmp) {
> ?found:
> -???????????????????????return words * BITS_PER_LONG + __fls(tmp);
> +???????????????????????return words * BITS_PER_LONG + __flsl(tmp);
> ????????????????}
> ????????}
> ?
> @@ -150,7 +150,7 @@ found_first:
> ????????if (tmp == 0UL)?????????/* Are any bits set? */
> ????????????????return result + size;???/* Nope. */
> ?found_middle:
> -???????return result + __ffs(tmp);
> +???????return result + __ffsl(tmp);
> ?}
> ?
> ?/**
> @@ -196,5 +196,5 @@ found_first:
> ????????if (tmp == ~0UL)????????/* Are any bits zero? */
> ????????????????return result + size;???/* Nope. */
> ?found_middle:
> -???????return result + ffz(tmp);
> +???????return result + __ffz(tmp);
> ?}
> diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c
> index d9a15d9..5ac7d80 100644
> --- a/lib/sbi/sbi_hart.c
> +++ b/lib/sbi/sbi_hart.c
> @@ -368,7 +368,7 @@ static int hart_pmu_get_allowed_bits(void)
> ????????????????if (trap.cause)
> ????????????????????????return 0;
> ????????}
> -???????num_bits = __fls(val) + 1;
> +???????num_bits = __flsl(val) + 1;
> ?#if __riscv_xlen == 32
> ????????csr_write_allowed(CSR_MHPMCOUNTER3H, (ulong)&trap, val);
> ????????if (!trap.cause) {
> @@ -376,7 +376,7 @@ static int hart_pmu_get_allowed_bits(void)
> ????????????????if (trap.cause)
> ????????????????????????return num_bits;
> ????????}
> -???????num_bits += __fls(val) + 1;
> +???????num_bits += __flsl(val) + 1;
> ?
> ?#endif
> ?
> @@ -439,7 +439,7 @@ static void hart_detect_features(struct
> sbi_scratch *scratch)
> ???????? */
> ????????val = hart_pmp_get_allowed_addr();
> ????????if (val) {
> -???????????????hfeatures->pmp_gran =? 1 << (__ffs(val) + 2);
> +???????????????hfeatures->pmp_gran =? 1 << (__ffsl(val) + 2);
> ????????????????hfeatures->pmp_addr_bits = __fls(val) + 1;
> ????????????????/* Detect number of PMP regions. At least PMPADDR0
> should be implemented*/
> ????????????????__check_csr_64(CSR_PMPADDR0, 0, val, pmp_count,
> __pmp_skip);
> diff --git a/lib/sbi/sbi_pmu.c b/lib/sbi/sbi_pmu.c
> index 5b845f8..5b191ab 100644
> --- a/lib/sbi/sbi_pmu.c
> +++ b/lib/sbi/sbi_pmu.c
> @@ -343,7 +343,7 @@ int sbi_pmu_ctr_start(unsigned long cbase,
> unsigned long cmask,
> ????????int ret = SBI_EINVAL;
> ????????bool bUpdate = FALSE;
> ?
> -???????if (__fls(ctr_mask) >= total_ctrs)
> +???????if (__flsl(ctr_mask) >= total_ctrs)
> ????????????????return ret;
> ?
> ????????if (flags & SBI_PMU_START_FLAG_SET_INIT_VALUE)
> @@ -417,7 +417,7 @@ int sbi_pmu_ctr_stop(unsigned long cbase, unsigned
> long cmask,
> ????????uint32_t event_code;
> ????????unsigned long ctr_mask = cmask << cbase;
> ?
> -???????if (__fls(ctr_mask) >= total_ctrs)
> +???????if (__flsl(ctr_mask) >= total_ctrs)
> ????????????????return SBI_EINVAL;
> ?
> ????????for_each_set_bit_from(cbase, &ctr_mask, total_ctrs) {
> @@ -606,7 +606,7 @@ int sbi_pmu_ctr_cfg_match(unsigned long cidx_base,
> unsigned long cidx_mask,
> ????????unsigned long tmp = cidx_mask << cidx_base;
> ?
> ????????/* Do a basic sanity check of counter base & mask */
> -???????if (__fls(tmp) >= total_ctrs || event_type >=
> SBI_PMU_EVENT_TYPE_MAX)
> +???????if (__flsl(tmp) >= total_ctrs || event_type >=
> SBI_PMU_EVENT_TYPE_MAX)
> ????????????????return SBI_EINVAL;
> ?
> ????????if (flags & SBI_PMU_CFG_FLAG_SKIP_MATCH) {
> diff --git a/lib/utils/timer/aclint_mtimer.c
> b/lib/utils/timer/aclint_mtimer.c
> index 2532b63..d17d15f 100644
> --- a/lib/utils/timer/aclint_mtimer.c
> +++ b/lib/utils/timer/aclint_mtimer.c
> @@ -154,7 +154,7 @@ static int aclint_mtimer_add_regions(unsigned long
> addr, unsigned long size)
> ????????while (pos < end) {
> ????????????????rsize = pos & (MTIMER_ADD_REGION_ALIGN - 1);
> ????????????????if (rsize)
> -???????????????????????rsize = 1UL << __ffs(pos);
> +???????????????????????rsize = 1UL << __ffsl(pos);
> ????????????????else
> ????????????????????????rsize = ((end - pos) <
> MTIMER_ADD_REGION_ALIGN) ?
> ????????????????????????????????(end - pos) : MTIMER_ADD_REGION_ALIGN;
> --
> 2.32.0
>
>
next prev parent reply other threads:[~2022-01-25 14:49 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-24 12:22 [PATCH] lib: fix compilation when strings.h is included Petro Karashchenko
2022-01-25 13:49 ` Xiang W
[not found] ` <CAA5uK6Kg=pXn3h1NSV=HuYvLcnWuDy313XYTYmH=u5d2uFLbgw@mail.gmail.com>
2022-01-25 14:08 ` Fwd: " Petro Karashchenko
2022-01-25 14:48 ` Xiang W
2022-01-25 14:49 ` Xiang W [this message]
2022-01-25 23:33 ` Jessica Clarke
2022-01-28 5:06 ` Anup Patel
[not found] <CAA5uK6+Utvb5V7wcrPoO5Syvsyvgr6o0C4uM1eMwQndY3xMbhQ@mail.gmail.com>
2022-01-28 7:13 ` Petro Karashchenko
2022-02-01 9:21 ` Petro Karashchenko
2022-02-01 9:31 ` Anup Patel
2022-02-04 5:38 ` Anup Patel
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=72d43ccb49893edf0d55bbfdfd851966606bb05b.camel@126.com \
--to=wxjstz@126.com \
--cc=opensbi@lists.infradead.org \
/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