162306a36Sopenharmony_ci#!/bin/sh 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 362306a36Sopenharmony_ci 462306a36Sopenharmony_ciATOMICDIR=$(dirname $0) 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci. ${ATOMICDIR}/atomic-tbl.sh 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#gen_cast(arg, int, atomic) 962306a36Sopenharmony_cigen_cast() 1062306a36Sopenharmony_ci{ 1162306a36Sopenharmony_ci local arg="$1"; shift 1262306a36Sopenharmony_ci local int="$1"; shift 1362306a36Sopenharmony_ci local atomic="$1"; shift 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci [ "${arg%%:*}" = "p" ] || return 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci printf "($(gen_param_type "${arg}" "${int}" "${atomic}"))" 1862306a36Sopenharmony_ci} 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci#gen_args_cast(int, atomic, arg...) 2162306a36Sopenharmony_cigen_args_cast() 2262306a36Sopenharmony_ci{ 2362306a36Sopenharmony_ci local int="$1"; shift 2462306a36Sopenharmony_ci local atomic="$1"; shift 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci while [ "$#" -gt 0 ]; do 2762306a36Sopenharmony_ci local cast="$(gen_cast "$1" "${int}" "${atomic}")" 2862306a36Sopenharmony_ci local arg="$(gen_param_name "$1")" 2962306a36Sopenharmony_ci printf "${cast}${arg}" 3062306a36Sopenharmony_ci [ "$#" -gt 1 ] && printf ", " 3162306a36Sopenharmony_ci shift; 3262306a36Sopenharmony_ci done 3362306a36Sopenharmony_ci} 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ci#gen_proto_order_variant(meta, pfx, name, sfx, order, arg...) 3662306a36Sopenharmony_cigen_proto_order_variant() 3762306a36Sopenharmony_ci{ 3862306a36Sopenharmony_ci local meta="$1"; shift 3962306a36Sopenharmony_ci local pfx="$1"; shift 4062306a36Sopenharmony_ci local name="$1"; shift 4162306a36Sopenharmony_ci local sfx="$1"; shift 4262306a36Sopenharmony_ci local order="$1"; shift 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci local atomicname="${pfx}${name}${sfx}${order}" 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci local ret="$(gen_ret_type "${meta}" "long")" 4762306a36Sopenharmony_ci local params="$(gen_params "long" "atomic_long" "$@")" 4862306a36Sopenharmony_ci local argscast_32="$(gen_args_cast "int" "atomic" "$@")" 4962306a36Sopenharmony_ci local argscast_64="$(gen_args_cast "s64" "atomic64" "$@")" 5062306a36Sopenharmony_ci local retstmt="$(gen_ret_stmt "${meta}")" 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci gen_kerneldoc "raw_" "${meta}" "${pfx}" "${name}" "${sfx}" "${order}" "atomic_long" "long" "$@" 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_cicat <<EOF 5562306a36Sopenharmony_cistatic __always_inline ${ret} 5662306a36Sopenharmony_ciraw_atomic_long_${atomicname}(${params}) 5762306a36Sopenharmony_ci{ 5862306a36Sopenharmony_ci#ifdef CONFIG_64BIT 5962306a36Sopenharmony_ci ${retstmt}raw_atomic64_${atomicname}(${argscast_64}); 6062306a36Sopenharmony_ci#else 6162306a36Sopenharmony_ci ${retstmt}raw_atomic_${atomicname}(${argscast_32}); 6262306a36Sopenharmony_ci#endif 6362306a36Sopenharmony_ci} 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ciEOF 6662306a36Sopenharmony_ci} 6762306a36Sopenharmony_ci 6862306a36Sopenharmony_cicat << EOF 6962306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci// Generated by $0 7262306a36Sopenharmony_ci// DO NOT MODIFY THIS FILE DIRECTLY 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci#ifndef _LINUX_ATOMIC_LONG_H 7562306a36Sopenharmony_ci#define _LINUX_ATOMIC_LONG_H 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci#include <linux/compiler.h> 7862306a36Sopenharmony_ci#include <asm/types.h> 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ci#ifdef CONFIG_64BIT 8162306a36Sopenharmony_citypedef atomic64_t atomic_long_t; 8262306a36Sopenharmony_ci#define ATOMIC_LONG_INIT(i) ATOMIC64_INIT(i) 8362306a36Sopenharmony_ci#define atomic_long_cond_read_acquire atomic64_cond_read_acquire 8462306a36Sopenharmony_ci#define atomic_long_cond_read_relaxed atomic64_cond_read_relaxed 8562306a36Sopenharmony_ci#else 8662306a36Sopenharmony_citypedef atomic_t atomic_long_t; 8762306a36Sopenharmony_ci#define ATOMIC_LONG_INIT(i) ATOMIC_INIT(i) 8862306a36Sopenharmony_ci#define atomic_long_cond_read_acquire atomic_cond_read_acquire 8962306a36Sopenharmony_ci#define atomic_long_cond_read_relaxed atomic_cond_read_relaxed 9062306a36Sopenharmony_ci#endif 9162306a36Sopenharmony_ci 9262306a36Sopenharmony_ciEOF 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_cigrep '^[a-z]' "$1" | while read name meta args; do 9562306a36Sopenharmony_ci gen_proto "${meta}" "${name}" ${args} 9662306a36Sopenharmony_cidone 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_cicat <<EOF 9962306a36Sopenharmony_ci#endif /* _LINUX_ATOMIC_LONG_H */ 10062306a36Sopenharmony_ciEOF 101