try_cmpxchg (762f99f4f3cb41a775b5157dd761217beba65873) try_cmpxchg (9257959a6e5b4fca6fc8e985790bff62c2046f20)
1cat <<EOF
2static __always_inline bool
1cat <<EOF
2static __always_inline bool
3arch_${atomic}_try_cmpxchg${order}(${atomic}_t *v, ${int} *old, ${int} new)
3raw_${atomic}_try_cmpxchg${order}(${atomic}_t *v, ${int} *old, ${int} new)
4{
5 ${int} r, o = *old;
4{
5 ${int} r, o = *old;
6 r = arch_${atomic}_cmpxchg${order}(v, o, new);
6 r = raw_${atomic}_cmpxchg${order}(v, o, new);
7 if (unlikely(r != o))
8 *old = r;
9 return likely(r == o);
10}
11EOF
7 if (unlikely(r != o))
8 *old = r;
9 return likely(r == o);
10}
11EOF