From: Andrew Jones <ajones@ventanamicro.com>
To: Woodrow Shen <woodrow.shen@sifive.com>
Cc: linux-riscv@lists.infradead.org,
Paul Walmsley <paul.walmsley@sifive.com>,
palmer@dabbelt.com, aou@eecs.berkeley.edu
Subject: Re: [PATCH] RISC-V: selftests: cbo: Use exported __cpu_to_le32() with uapi header
Date: Fri, 22 Mar 2024 09:40:05 +0100 [thread overview]
Message-ID: <20240322-e0102f3abdfc0a1943da3c31@orel> (raw)
In-Reply-To: <CABquHATcBTUwfLpd9sPObBgNobqQKEAZ2yxk+TWSpyO5xvpXpg@mail.gmail.com>
On Thu, Mar 21, 2024 at 08:14:34PM +0800, Woodrow Shen wrote:
> Short background: while I'm building the riscv/hwprobe tests, it seems
> I always hit the "error: impossible constraint in 'asm'" even though
> the commit https://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git/commit/tools/testing/selftests/riscv/hwprobe/cbo.c?id=0de65288d75ff96c30e216557d979fb9342c4323
> is applied. I'm not sure if this only happens to me as I tried to
> build them on a clean debian chroot. To apply this patch makes the
> build happy, but if there is no need to change, please ignore this
> patch.
It looks like I managed to mess up my fix to my mess up. Clearly I
shouldn't still have a potential function call in a macro which I want
to always resolve to a literal. Instead of using cpu_to_le32 I should
use something that results in ___constant_swab32, like your suggestion
of __cpu_to_le32. I'm not sure we want to depend on Linux UAPI that isn't
in the tools directory though, so maybe we should just reproduce it here.
Something like
#if __BYTE_ORDER == __BIG_ENDIAN
# define constant_swab32(_x) \
((((_x) & 0x000000ffU) << 24) | \
(((_x) & 0x0000ff00U) << 8) | \
(((_x) & 0x00ff0000U) >> 8) | \
(((_x) & 0xff000000U) >> 24))
#else
# constant_swab32(_x) (_x)
#endif
#define MK_CBO(fn) constant_swab32((uint32_t)(fn) << 20 | 10 << 15 | 2 << 12 | 0 << 7 | 15)
Thanks,
drew
>
> And sorry to forget cc more maintainers for reviewing.
>
> Cheers,
> Woodrow
>
>
> On Thu, Mar 21, 2024 at 7:52 PM <woodrow.shen@sifive.com> wrote:
> >
> > From: Hsieh-Tseng Shen <woodrow.shen@sifive.com>
> >
> > cpu_to_le32 is not defined in uapi headers, and it could cause an error
> > of impossible constraint in 'asm' during compilation. However,
> > the reason is due to undefined reference to cpu_to_le32.
> > __cpu_to_le32() defined from byteorder.h should be used instead.
> >
> > Signed-off-by: Hsieh-Tseng Shen <woodrow.shen@sifive.com>
> > ---
> > tools/testing/selftests/riscv/hwprobe/cbo.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/testing/selftests/riscv/hwprobe/cbo.c b/tools/testing/selftests/riscv/hwprobe/cbo.c
> > index c537d52fafc5..b2dd18b3e360 100644
> > --- a/tools/testing/selftests/riscv/hwprobe/cbo.c
> > +++ b/tools/testing/selftests/riscv/hwprobe/cbo.c
> > @@ -15,11 +15,12 @@
> > #include <linux/compiler.h>
> > #include <linux/kernel.h>
> > #include <asm/ucontext.h>
> > +#include <asm/byteorder.h>
> >
> > #include "hwprobe.h"
> > #include "../../kselftest.h"
> >
> > -#define MK_CBO(fn) cpu_to_le32((fn) << 20 | 10 << 15 | 2 << 12 | 0 << 7 | 15)
> > +#define MK_CBO(fn) __cpu_to_le32((fn) << 20 | 10 << 15 | 2 << 12 | 0 << 7 | 15)
> >
> > static char mem[4096] __aligned(4096) = { [0 ... 4095] = 0xa5 };
> >
> > --
> > 2.34.1
> >
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
prev parent reply other threads:[~2024-03-22 8:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-21 11:52 [PATCH] RISC-V: selftests: cbo: Use exported __cpu_to_le32() with uapi header woodrow.shen
2024-03-21 12:14 ` Woodrow Shen
2024-03-22 8:40 ` Andrew Jones [this message]
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=20240322-e0102f3abdfc0a1943da3c31@orel \
--to=ajones@ventanamicro.com \
--cc=aou@eecs.berkeley.edu \
--cc=linux-riscv@lists.infradead.org \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=woodrow.shen@sifive.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.