GNU Linux-libre 6.1.90-gnu
[releases.git] / scripts / atomic / fallbacks / dec_if_positive
1 cat <<EOF
2 static __always_inline ${ret}
3 arch_${atomic}_dec_if_positive(${atomic}_t *v)
4 {
5         ${int} dec, c = arch_${atomic}_read(v);
6
7         do {
8                 dec = c - 1;
9                 if (unlikely(dec < 0))
10                         break;
11         } while (!arch_${atomic}_try_cmpxchg(v, &c, dec));
12
13         return dec;
14 }
15 EOF