mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

Commit0de65288d7
("RISC-V: selftests: cbo: Ensure asm operands match constraints") attempted to ensure MK_CBO() would always provide to a compile-time constant when given a constant, but cpu_to_le32() isn't necessarily going to do that. Switch to manually shifting the bytes, when needed, to finally get this right. Reported-by: Woodrow Shen <woodrow.shen@sifive.com> Closes: https://lore.kernel.org/all/CABquHATcBTUwfLpd9sPObBgNobqQKEAZ2yxk+TWSpyO5xvpXpg@mail.gmail.com/ Fixes:a29e2a48af
("RISC-V: selftests: Add CBO tests") Fixes:0de65288d7
("RISC-V: selftests: cbo: Ensure asm operands match constraints") Signed-off-by: Andrew Jones <ajones@ventanamicro.com> Link: https://lore.kernel.org/r/20240322134728.151255-2-ajones@ventanamicro.com Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
25 lines
724 B
C
25 lines
724 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
#ifndef SELFTEST_RISCV_HWPROBE_H
|
|
#define SELFTEST_RISCV_HWPROBE_H
|
|
#include <stddef.h>
|
|
#include <asm/hwprobe.h>
|
|
|
|
#if __BYTE_ORDER == __BIG_ENDIAN
|
|
# define le32_bswap(_x) \
|
|
((((_x) & 0x000000ffU) << 24) | \
|
|
(((_x) & 0x0000ff00U) << 8) | \
|
|
(((_x) & 0x00ff0000U) >> 8) | \
|
|
(((_x) & 0xff000000U) >> 24))
|
|
#else
|
|
# define le32_bswap(_x) (_x)
|
|
#endif
|
|
|
|
/*
|
|
* Rather than relying on having a new enough libc to define this, just do it
|
|
* ourselves. This way we don't need to be coupled to a new-enough libc to
|
|
* contain the call.
|
|
*/
|
|
long riscv_hwprobe(struct riscv_hwprobe *pairs, size_t pair_count,
|
|
size_t cpusetsize, unsigned long *cpus, unsigned int flags);
|
|
|
|
#endif
|