#include <linux/stringify.h>
 
-#ifdef CONFIG_ARM64_LSE_ATOMICS
-#define __LL_SC_FALLBACK(asm_ops)                                      \
-"      b       3f\n"                                                   \
-"      .subsection     1\n"                                            \
-"3:\n"                                                                 \
-asm_ops "\n"                                                           \
-"      b       4f\n"                                                   \
-"      .previous\n"                                                    \
-"4:\n"
-#else
-#define __LL_SC_FALLBACK(asm_ops) asm_ops
-#endif
-
 #ifndef CONFIG_CC_HAS_K_CONSTRAINT
 #define K
 #endif
        int result;                                                     \
                                                                        \
        asm volatile("// atomic_" #op "\n"                              \
-       __LL_SC_FALLBACK(                                               \
        "       prfm    pstl1strm, %2\n"                                \
        "1:     ldxr    %w0, %2\n"                                      \
        "       " #asm_op "     %w0, %w0, %w3\n"                        \
        "       stxr    %w1, %w0, %2\n"                                 \
-       "       cbnz    %w1, 1b\n")                                     \
+       "       cbnz    %w1, 1b\n"                                      \
        : "=&r" (result), "=&r" (tmp), "+Q" (v->counter)                \
        : __stringify(constraint) "r" (i));                             \
 }
        int result;                                                     \
                                                                        \
        asm volatile("// atomic_" #op "_return" #name "\n"              \
-       __LL_SC_FALLBACK(                                               \
        "       prfm    pstl1strm, %2\n"                                \
        "1:     ld" #acq "xr    %w0, %2\n"                              \
        "       " #asm_op "     %w0, %w0, %w3\n"                        \
        "       st" #rel "xr    %w1, %w0, %2\n"                         \
        "       cbnz    %w1, 1b\n"                                      \
-       "       " #mb )                                                 \
+       "       " #mb                                                   \
        : "=&r" (result), "=&r" (tmp), "+Q" (v->counter)                \
        : __stringify(constraint) "r" (i)                               \
        : cl);                                                          \
        int val, result;                                                \
                                                                        \
        asm volatile("// atomic_fetch_" #op #name "\n"                  \
-       __LL_SC_FALLBACK(                                               \
        "       prfm    pstl1strm, %3\n"                                \
        "1:     ld" #acq "xr    %w0, %3\n"                              \
        "       " #asm_op "     %w1, %w0, %w4\n"                        \
        "       st" #rel "xr    %w2, %w1, %3\n"                         \
        "       cbnz    %w2, 1b\n"                                      \
-       "       " #mb )                                                 \
+       "       " #mb                                                   \
        : "=&r" (result), "=&r" (val), "=&r" (tmp), "+Q" (v->counter)   \
        : __stringify(constraint) "r" (i)                               \
        : cl);                                                          \
        unsigned long tmp;                                              \
                                                                        \
        asm volatile("// atomic64_" #op "\n"                            \
-       __LL_SC_FALLBACK(                                               \
        "       prfm    pstl1strm, %2\n"                                \
        "1:     ldxr    %0, %2\n"                                       \
        "       " #asm_op "     %0, %0, %3\n"                           \
        "       stxr    %w1, %0, %2\n"                                  \
-       "       cbnz    %w1, 1b")                                       \
+       "       cbnz    %w1, 1b"                                        \
        : "=&r" (result), "=&r" (tmp), "+Q" (v->counter)                \
        : __stringify(constraint) "r" (i));                             \
 }
        unsigned long tmp;                                              \
                                                                        \
        asm volatile("// atomic64_" #op "_return" #name "\n"            \
-       __LL_SC_FALLBACK(                                               \
        "       prfm    pstl1strm, %2\n"                                \
        "1:     ld" #acq "xr    %0, %2\n"                               \
        "       " #asm_op "     %0, %0, %3\n"                           \
        "       st" #rel "xr    %w1, %0, %2\n"                          \
        "       cbnz    %w1, 1b\n"                                      \
-       "       " #mb )                                                 \
+       "       " #mb                                                   \
        : "=&r" (result), "=&r" (tmp), "+Q" (v->counter)                \
        : __stringify(constraint) "r" (i)                               \
        : cl);                                                          \
        unsigned long tmp;                                              \
                                                                        \
        asm volatile("// atomic64_fetch_" #op #name "\n"                \
-       __LL_SC_FALLBACK(                                               \
        "       prfm    pstl1strm, %3\n"                                \
        "1:     ld" #acq "xr    %0, %3\n"                               \
        "       " #asm_op "     %1, %0, %4\n"                           \
        "       st" #rel "xr    %w2, %1, %3\n"                          \
        "       cbnz    %w2, 1b\n"                                      \
-       "       " #mb )                                                 \
+       "       " #mb                                                   \
        : "=&r" (result), "=&r" (val), "=&r" (tmp), "+Q" (v->counter)   \
        : __stringify(constraint) "r" (i)                               \
        : cl);                                                          \
        unsigned long tmp;
 
        asm volatile("// atomic64_dec_if_positive\n"
-       __LL_SC_FALLBACK(
        "       prfm    pstl1strm, %2\n"
        "1:     ldxr    %0, %2\n"
        "       subs    %0, %0, #1\n"
        "       stlxr   %w1, %0, %2\n"
        "       cbnz    %w1, 1b\n"
        "       dmb     ish\n"
-       "2:")
+       "2:"
        : "=&r" (result), "=&r" (tmp), "+Q" (v->counter)
        :
        : "cc", "memory");
                old = (u##sz)old;                                       \
                                                                        \
        asm volatile(                                                   \
-       __LL_SC_FALLBACK(                                               \
        "       prfm    pstl1strm, %[v]\n"                              \
        "1:     ld" #acq "xr" #sfx "\t%" #w "[oldval], %[v]\n"          \
        "       eor     %" #w "[tmp], %" #w "[oldval], %" #w "[old]\n"  \
        "       st" #rel "xr" #sfx "\t%w[tmp], %" #w "[new], %[v]\n"    \
        "       cbnz    %w[tmp], 1b\n"                                  \
        "       " #mb "\n"                                              \
-       "2:")                                                           \
+       "2:"                                                            \
        : [tmp] "=&r" (tmp), [oldval] "=&r" (oldval),                   \
          [v] "+Q" (*(u##sz *)ptr)                                      \
        : [old] __stringify(constraint) "r" (old), [new] "r" (new)      \
        unsigned long tmp, ret;                                         \
                                                                        \
        asm volatile("// __cmpxchg_double" #name "\n"                   \
-       __LL_SC_FALLBACK(                                               \
        "       prfm    pstl1strm, %2\n"                                \
        "1:     ldxp    %0, %1, %2\n"                                   \
        "       eor     %0, %0, %3\n"                                   \
        "       st" #rel "xp    %w0, %5, %6, %2\n"                      \
        "       cbnz    %w0, 1b\n"                                      \
        "       " #mb "\n"                                              \
-       "2:")                                                           \
+       "2:"                                                            \
        : "=&r" (tmp), "=&r" (ret), "+Q" (*(unsigned long *)ptr)        \
        : "r" (old1), "r" (old2), "r" (new1), "r" (new2)                \
        : cl);                                                          \