On Fri, Feb 27, 2026 at 03:17:01PM +0000, Yeoreum Yun wrote:
> -#define __futex_atomic_op(insn, ret, oldval, uaddr, tmp, oparg)
> \
> -do { \
> +#define LLSC_FUTEX_ATOMIC_OP(op, insn)
> \
> +static __always_inline int \
> +__llsc_futex_atomic_##op(int oparg, u32 __user *uaddr, int *oval) \
> +{ \
> unsigned int loops = FUTEX_MAX_LOOPS; \
> + int ret, oldval, newval; \
> \
> uaccess_enable_privileged(); \
> - asm volatile( \
> + asm volatile("// __llsc_futex_atomic_" #op "\n" \
> " prfm pstl1strm, %2\n" \
> -"1: ldxr %w1, %2\n" \
> +"1: ldxr %w[oldval], %2\n" \
> insn "\n" \
> -"2: stlxr %w0, %w3, %2\n" \
> +"2: stlxr %w0, %w[newval], %2\n" \
Looking again at this as I originally reviewed the series without the
positional operands.
Can you not use only named operands instead of mixing them? The same
comment for all other asm changes in this file.
--
Catalin