diff options
author | Mark Rutland <mark.rutland@arm.com> | 2021-07-13 12:52:52 +0200 |
---|---|---|
committer | Peter Zijlstra <peterz@infradead.org> | 2021-07-16 18:46:45 +0200 |
commit | 67d1b0de258ad066e1fc85d0ceaa75e107fb45bb (patch) | |
tree | 6b566ab5fc960e44ddfd558b97ac5f381440ec35 /scripts/atomic | |
parent | locking/atomic: centralize generated headers (diff) | |
download | linux-67d1b0de258ad066e1fc85d0ceaa75e107fb45bb.tar.xz linux-67d1b0de258ad066e1fc85d0ceaa75e107fb45bb.zip |
locking/atomic: add arch_atomic_long*()
Now that all architectures provide arch_{atomic,atomic64}_*(), we can
build arch_atomic_long_*() atop these, which can be safely used in
noinstr code. The regular atomic_long_*() wrappers are built atop these,
as we do for {atomic,atomic64}_*() atop arch_{atomic,atomic64}_*().
We don't provide arch_* versions of the cond_read*() variants, as we
don't have arch_* versions of the underlying atomic/atomic64 functions
(nor the smp_cond_load*() helpers these are typically based on).
Note that the headers in this patch under include/linux/atomic/ are
generated by the scripts in scripts/atomic/.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lore.kernel.org/r/20210713105253.7615-5-mark.rutland@arm.com
Diffstat (limited to 'scripts/atomic')
-rwxr-xr-x | scripts/atomic/gen-atomic-instrumented.sh | 5 | ||||
-rwxr-xr-x | scripts/atomic/gen-atomic-long.sh | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/scripts/atomic/gen-atomic-instrumented.sh b/scripts/atomic/gen-atomic-instrumented.sh index 6fc1ab772e40..035ceb4ee85c 100755 --- a/scripts/atomic/gen-atomic-instrumented.sh +++ b/scripts/atomic/gen-atomic-instrumented.sh @@ -138,6 +138,11 @@ grep '^[a-z]' "$1" | while read name meta args; do gen_proto "${meta}" "${name}" "atomic64" "s64" ${args} done +grep '^[a-z]' "$1" | while read name meta args; do + gen_proto "${meta}" "${name}" "atomic_long" "long" ${args} +done + + for xchg in "xchg" "cmpxchg" "cmpxchg64" "try_cmpxchg"; do for order in "" "_acquire" "_release" "_relaxed"; do gen_xchg "${xchg}${order}" "" diff --git a/scripts/atomic/gen-atomic-long.sh b/scripts/atomic/gen-atomic-long.sh index db69572609df..eda89cea6e1d 100755 --- a/scripts/atomic/gen-atomic-long.sh +++ b/scripts/atomic/gen-atomic-long.sh @@ -47,9 +47,9 @@ gen_proto_order_variant() cat <<EOF static __always_inline ${ret} -atomic_long_${name}(${params}) +arch_atomic_long_${name}(${params}) { - ${retstmt}${atomic}_${name}(${argscast}); + ${retstmt}arch_${atomic}_${name}(${argscast}); } EOF |