18c2ecf20Sopenharmony_cicat <<EOF 28c2ecf20Sopenharmony_cistatic __always_inline ${ret} 38c2ecf20Sopenharmony_ci${arch}${atomic}_dec_if_positive(${atomic}_t *v) 48c2ecf20Sopenharmony_ci{ 58c2ecf20Sopenharmony_ci ${int} dec, c = ${arch}${atomic}_read(v); 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci do { 88c2ecf20Sopenharmony_ci dec = c - 1; 98c2ecf20Sopenharmony_ci if (unlikely(dec < 0)) 108c2ecf20Sopenharmony_ci break; 118c2ecf20Sopenharmony_ci } while (!${arch}${atomic}_try_cmpxchg(v, &c, dec)); 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci return dec; 148c2ecf20Sopenharmony_ci} 158c2ecf20Sopenharmony_ciEOF 16