riscv: cmpxchg: Use riscv_has_extension_likely

Use riscv_has_extension_likely() to check for RISCV_ISA_EXT_ZAWRS,
replacing the use of asm goto with ALTERNATIVE.

The "likely" variant is used to match the behavior of the original
implementation using ALTERNATIVE("j %l[no_zawrs]", "nop", ...).

Signed-off-by: Vivian Wang <wangruikang@iscas.ac.cn>
Link: https://patch.msgid.link/20251020-riscv-altn-helper-wip-v4-5-ef941c87669a@iscas.ac.cn
Signed-off-by: Paul Walmsley <pjw@kernel.org>
pull/1354/merge
Vivian Wang 2025-11-17 21:19:23 -07:00 committed by Paul Walmsley
parent 6b85e9ac4a
commit 724c694479
1 changed files with 4 additions and 8 deletions

View File

@ -373,9 +373,10 @@ static __always_inline void __cmpwait(volatile void *ptr,
u32 *__ptr32b;
ulong __s, __val, __mask;
asm goto(ALTERNATIVE("j %l[no_zawrs]", "nop",
0, RISCV_ISA_EXT_ZAWRS, 1)
: : : : no_zawrs);
if (!riscv_has_extension_likely(RISCV_ISA_EXT_ZAWRS)) {
ALT_RISCV_PAUSE();
return;
}
switch (size) {
case 1:
@ -437,11 +438,6 @@ static __always_inline void __cmpwait(volatile void *ptr,
default:
BUILD_BUG();
}
return;
no_zawrs:
ALT_RISCV_PAUSE();
}
#define __cmpwait_relaxed(ptr, val) \