From: Mathieu Desnoyers Date: Wed, 6 Sep 2023 13:25:22 +0000 (-0400) Subject: LoongArch: Document that byte and short atomics are implemented with LL/SC X-Git-Tag: v0.14.1~12 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=df8a9108cb82436342ea72dda69a05baab1f5427;p=urcu.git LoongArch: Document that byte and short atomics are implemented with LL/SC Based on the LoongArch Reference Manual: https://loongson.github.io/LoongArch-Documentation/LoongArch-Vol1-EN.html Section 2.2.7 "Atomic Memory Access Instructions" only lists atomic operations for 32-bit and 64-bit integers. As detailed in Section 2.2.7.1, LL/SC instructions operating on 32-bit and 64-bit integers are also available. Those are used by the compiler to support atomics on byte and short types. This means atomics on 32-bit and 64-bit types have stronger forward progress guarantees than those operating on 8-bit and 16-bit types. Link: https://github.com/urcu/userspace-rcu/pull/11#issuecomment-1706528796 Signed-off-by: Mathieu Desnoyers Change-Id: I01569b718f7300a46d984c34065c0bbfbd2f7cc6 --- diff --git a/include/urcu/uatomic/loongarch.h b/include/urcu/uatomic/loongarch.h index f41302a..dcf9e93 100644 --- a/include/urcu/uatomic/loongarch.h +++ b/include/urcu/uatomic/loongarch.h @@ -32,6 +32,11 @@ extern "C" { #endif +/* + * LoongArch implements byte and short atomics with LL/SC instructions, + * which retry if the cache line is modified concurrently between LL and + * SC. + */ #define UATOMIC_HAS_ATOMIC_BYTE #define UATOMIC_HAS_ATOMIC_SHORT