summaryrefslogtreecommitdiff
path: root/scripts/atomic/fallbacks/set_release
blob: 2a65d3b29f4b65bd1c61de554f9a81e9a7628f32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if /bin/sh ${ATOMICDIR}/chkdup.sh arch_${atomic}_set_release set_release
then
cat <<EOF
/**
 * arch_${atomic}_set_release - Atomic store release
 * @v: pointer of type ${atomic}_t
 * @i: value to store
 *
 * Atomically store @i into *@v with release ordering.
 */
EOF
fi
cat <<EOF
static __always_inline void
arch_${atomic}_set_release(${atomic}_t *v, ${int} i)
{
	if (__native_word(${atomic}_t)) {
		smp_store_release(&(v)->counter, i);
	} else {
		__atomic_release_fence();
		arch_${atomic}_set(v, i);
	}
}
EOF