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