From: FUJITA Tomonori Date: Sat, 27 Dec 2025 11:59:48 +0000 (+0900) Subject: rust: helpers: Add i8/i16 atomic try_cmpxchg helpers X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=164e4b5600b32b4ddeac58bb5b37bc1490a1dce4;p=thirdparty%2Fkernel%2Flinux.git rust: helpers: Add i8/i16 atomic try_cmpxchg helpers Add i8/i16 atomic try_cmpxchg helpers that call try_cmpxchg() macro implementing atomic try_cmpxchg using architecture-specific instructions. [boqun: Add comments explaining CONFIG_ARCH_SUPPORTS_ATOMIC_RMW and use try_cmpxchg() instead of raw_try_cmpxchg()] Signed-off-by: FUJITA Tomonori Signed-off-by: Boqun Feng Link: https://patch.msgid.link/20251227115951.1424458-2-fujita.tomonori@gmail.com --- diff --git a/rust/helpers/atomic_ext.c b/rust/helpers/atomic_ext.c index 76e392c39c7b7..5ee127f1cc80c 100644 --- a/rust/helpers/atomic_ext.c +++ b/rust/helpers/atomic_ext.c @@ -90,3 +90,20 @@ __rust_helper s16 rust_helper_atomic_i16_xchg_relaxed(s16 *ptr, s16 new) { return xchg_relaxed(ptr, new); } + +/* + * try_cmpxchg helpers depend on ARCH_SUPPORTS_ATOMIC_RMW and on the + * architecture provding try_cmpxchg() support for i8 and i16. + * + * The architectures that currently support Rust (x86_64, armv7, + * arm64, riscv, and loongarch) satisfy these requirements. + */ +__rust_helper bool rust_helper_atomic_i8_try_cmpxchg(s8 *ptr, s8 *old, s8 new) +{ + return try_cmpxchg(ptr, old, new); +} + +__rust_helper bool rust_helper_atomic_i16_try_cmpxchg(s16 *ptr, s16 *old, s16 new) +{ + return try_cmpxchg(ptr, old, new); +}