From: FUJITA Tomonori Date: Tue, 23 Dec 2025 06:21:37 +0000 (+0900) Subject: rust: helpers: Add i8/i16 atomic xchg helpers X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5dbc0a692459bc49cdb7add281086291da547750;p=thirdparty%2Fkernel%2Flinux.git rust: helpers: Add i8/i16 atomic xchg helpers Add i8/i16 atomic xchg helpers that call xchg() macro implementing atomic xchg using architecture-specific instructions. [boqun: Use xchg() instead of raw_xchg()] Reviewed-by: Alice Ryhl Signed-off-by: FUJITA Tomonori Reviewed-by: Gary Guo Signed-off-by: Boqun Feng Link: https://patch.msgid.link/20251223062140.938325-2-fujita.tomonori@gmail.com --- diff --git a/rust/helpers/atomic_ext.c b/rust/helpers/atomic_ext.c index 02e05b4246ae4..3136255a84c6e 100644 --- a/rust/helpers/atomic_ext.c +++ b/rust/helpers/atomic_ext.c @@ -2,6 +2,7 @@ #include #include +#include __rust_helper s8 rust_helper_atomic_i8_read(s8 *ptr) { @@ -42,3 +43,20 @@ __rust_helper void rust_helper_atomic_i16_set_release(s16 *ptr, s16 val) { smp_store_release(ptr, val); } + +/* + * xchg helpers depend on ARCH_SUPPORTS_ATOMIC_RMW and on the + * architecture provding xchg() support for i8 and i16. + * + * The architectures that currently support Rust (x86_64, armv7, + * arm64, riscv, and loongarch) satisfy these requirements. + */ +__rust_helper s8 rust_helper_atomic_i8_xchg(s8 *ptr, s8 new) +{ + return xchg(ptr, new); +} + +__rust_helper s16 rust_helper_atomic_i16_xchg(s16 *ptr, s16 new) +{ + return xchg(ptr, new); +}