18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ci// Generated by scripts/atomic/gen-atomic-instrumented.sh 48c2ecf20Sopenharmony_ci// DO NOT MODIFY THIS FILE DIRECTLY 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci/* 78c2ecf20Sopenharmony_ci * This file provides wrappers with KASAN instrumentation for atomic operations. 88c2ecf20Sopenharmony_ci * To use this functionality an arch's atomic.h file needs to define all 98c2ecf20Sopenharmony_ci * atomic operations with arch_ prefix (e.g. arch_atomic_read()) and include 108c2ecf20Sopenharmony_ci * this file at the end. This file provides atomic_read() that forwards to 118c2ecf20Sopenharmony_ci * arch_atomic_read() for actual atomic operation. 128c2ecf20Sopenharmony_ci * Note: if an arch atomic operation is implemented by means of other atomic 138c2ecf20Sopenharmony_ci * operations (e.g. atomic_read()/atomic_cmpxchg() loop), then it needs to use 148c2ecf20Sopenharmony_ci * arch_ variants (i.e. arch_atomic_read()/arch_atomic_cmpxchg()) to avoid 158c2ecf20Sopenharmony_ci * double instrumentation. 168c2ecf20Sopenharmony_ci */ 178c2ecf20Sopenharmony_ci#ifndef _ASM_GENERIC_ATOMIC_INSTRUMENTED_H 188c2ecf20Sopenharmony_ci#define _ASM_GENERIC_ATOMIC_INSTRUMENTED_H 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_ci#include <linux/build_bug.h> 218c2ecf20Sopenharmony_ci#include <linux/compiler.h> 228c2ecf20Sopenharmony_ci#include <linux/instrumented.h> 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_cistatic __always_inline int 258c2ecf20Sopenharmony_ciatomic_read(const atomic_t *v) 268c2ecf20Sopenharmony_ci{ 278c2ecf20Sopenharmony_ci instrument_atomic_read(v, sizeof(*v)); 288c2ecf20Sopenharmony_ci return arch_atomic_read(v); 298c2ecf20Sopenharmony_ci} 308c2ecf20Sopenharmony_ci#define atomic_read atomic_read 318c2ecf20Sopenharmony_ci 328c2ecf20Sopenharmony_ci#if defined(arch_atomic_read_acquire) 338c2ecf20Sopenharmony_cistatic __always_inline int 348c2ecf20Sopenharmony_ciatomic_read_acquire(const atomic_t *v) 358c2ecf20Sopenharmony_ci{ 368c2ecf20Sopenharmony_ci instrument_atomic_read(v, sizeof(*v)); 378c2ecf20Sopenharmony_ci return arch_atomic_read_acquire(v); 388c2ecf20Sopenharmony_ci} 398c2ecf20Sopenharmony_ci#define atomic_read_acquire atomic_read_acquire 408c2ecf20Sopenharmony_ci#endif 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_cistatic __always_inline void 438c2ecf20Sopenharmony_ciatomic_set(atomic_t *v, int i) 448c2ecf20Sopenharmony_ci{ 458c2ecf20Sopenharmony_ci instrument_atomic_write(v, sizeof(*v)); 468c2ecf20Sopenharmony_ci arch_atomic_set(v, i); 478c2ecf20Sopenharmony_ci} 488c2ecf20Sopenharmony_ci#define atomic_set atomic_set 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci#if defined(arch_atomic_set_release) 518c2ecf20Sopenharmony_cistatic __always_inline void 528c2ecf20Sopenharmony_ciatomic_set_release(atomic_t *v, int i) 538c2ecf20Sopenharmony_ci{ 548c2ecf20Sopenharmony_ci instrument_atomic_write(v, sizeof(*v)); 558c2ecf20Sopenharmony_ci arch_atomic_set_release(v, i); 568c2ecf20Sopenharmony_ci} 578c2ecf20Sopenharmony_ci#define atomic_set_release atomic_set_release 588c2ecf20Sopenharmony_ci#endif 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_cistatic __always_inline void 618c2ecf20Sopenharmony_ciatomic_add(int i, atomic_t *v) 628c2ecf20Sopenharmony_ci{ 638c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 648c2ecf20Sopenharmony_ci arch_atomic_add(i, v); 658c2ecf20Sopenharmony_ci} 668c2ecf20Sopenharmony_ci#define atomic_add atomic_add 678c2ecf20Sopenharmony_ci 688c2ecf20Sopenharmony_ci#if !defined(arch_atomic_add_return_relaxed) || defined(arch_atomic_add_return) 698c2ecf20Sopenharmony_cistatic __always_inline int 708c2ecf20Sopenharmony_ciatomic_add_return(int i, atomic_t *v) 718c2ecf20Sopenharmony_ci{ 728c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 738c2ecf20Sopenharmony_ci return arch_atomic_add_return(i, v); 748c2ecf20Sopenharmony_ci} 758c2ecf20Sopenharmony_ci#define atomic_add_return atomic_add_return 768c2ecf20Sopenharmony_ci#endif 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ci#if defined(arch_atomic_add_return_acquire) 798c2ecf20Sopenharmony_cistatic __always_inline int 808c2ecf20Sopenharmony_ciatomic_add_return_acquire(int i, atomic_t *v) 818c2ecf20Sopenharmony_ci{ 828c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 838c2ecf20Sopenharmony_ci return arch_atomic_add_return_acquire(i, v); 848c2ecf20Sopenharmony_ci} 858c2ecf20Sopenharmony_ci#define atomic_add_return_acquire atomic_add_return_acquire 868c2ecf20Sopenharmony_ci#endif 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci#if defined(arch_atomic_add_return_release) 898c2ecf20Sopenharmony_cistatic __always_inline int 908c2ecf20Sopenharmony_ciatomic_add_return_release(int i, atomic_t *v) 918c2ecf20Sopenharmony_ci{ 928c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 938c2ecf20Sopenharmony_ci return arch_atomic_add_return_release(i, v); 948c2ecf20Sopenharmony_ci} 958c2ecf20Sopenharmony_ci#define atomic_add_return_release atomic_add_return_release 968c2ecf20Sopenharmony_ci#endif 978c2ecf20Sopenharmony_ci 988c2ecf20Sopenharmony_ci#if defined(arch_atomic_add_return_relaxed) 998c2ecf20Sopenharmony_cistatic __always_inline int 1008c2ecf20Sopenharmony_ciatomic_add_return_relaxed(int i, atomic_t *v) 1018c2ecf20Sopenharmony_ci{ 1028c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1038c2ecf20Sopenharmony_ci return arch_atomic_add_return_relaxed(i, v); 1048c2ecf20Sopenharmony_ci} 1058c2ecf20Sopenharmony_ci#define atomic_add_return_relaxed atomic_add_return_relaxed 1068c2ecf20Sopenharmony_ci#endif 1078c2ecf20Sopenharmony_ci 1088c2ecf20Sopenharmony_ci#if !defined(arch_atomic_fetch_add_relaxed) || defined(arch_atomic_fetch_add) 1098c2ecf20Sopenharmony_cistatic __always_inline int 1108c2ecf20Sopenharmony_ciatomic_fetch_add(int i, atomic_t *v) 1118c2ecf20Sopenharmony_ci{ 1128c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1138c2ecf20Sopenharmony_ci return arch_atomic_fetch_add(i, v); 1148c2ecf20Sopenharmony_ci} 1158c2ecf20Sopenharmony_ci#define atomic_fetch_add atomic_fetch_add 1168c2ecf20Sopenharmony_ci#endif 1178c2ecf20Sopenharmony_ci 1188c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_add_acquire) 1198c2ecf20Sopenharmony_cistatic __always_inline int 1208c2ecf20Sopenharmony_ciatomic_fetch_add_acquire(int i, atomic_t *v) 1218c2ecf20Sopenharmony_ci{ 1228c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1238c2ecf20Sopenharmony_ci return arch_atomic_fetch_add_acquire(i, v); 1248c2ecf20Sopenharmony_ci} 1258c2ecf20Sopenharmony_ci#define atomic_fetch_add_acquire atomic_fetch_add_acquire 1268c2ecf20Sopenharmony_ci#endif 1278c2ecf20Sopenharmony_ci 1288c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_add_release) 1298c2ecf20Sopenharmony_cistatic __always_inline int 1308c2ecf20Sopenharmony_ciatomic_fetch_add_release(int i, atomic_t *v) 1318c2ecf20Sopenharmony_ci{ 1328c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1338c2ecf20Sopenharmony_ci return arch_atomic_fetch_add_release(i, v); 1348c2ecf20Sopenharmony_ci} 1358c2ecf20Sopenharmony_ci#define atomic_fetch_add_release atomic_fetch_add_release 1368c2ecf20Sopenharmony_ci#endif 1378c2ecf20Sopenharmony_ci 1388c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_add_relaxed) 1398c2ecf20Sopenharmony_cistatic __always_inline int 1408c2ecf20Sopenharmony_ciatomic_fetch_add_relaxed(int i, atomic_t *v) 1418c2ecf20Sopenharmony_ci{ 1428c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1438c2ecf20Sopenharmony_ci return arch_atomic_fetch_add_relaxed(i, v); 1448c2ecf20Sopenharmony_ci} 1458c2ecf20Sopenharmony_ci#define atomic_fetch_add_relaxed atomic_fetch_add_relaxed 1468c2ecf20Sopenharmony_ci#endif 1478c2ecf20Sopenharmony_ci 1488c2ecf20Sopenharmony_cistatic __always_inline void 1498c2ecf20Sopenharmony_ciatomic_sub(int i, atomic_t *v) 1508c2ecf20Sopenharmony_ci{ 1518c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1528c2ecf20Sopenharmony_ci arch_atomic_sub(i, v); 1538c2ecf20Sopenharmony_ci} 1548c2ecf20Sopenharmony_ci#define atomic_sub atomic_sub 1558c2ecf20Sopenharmony_ci 1568c2ecf20Sopenharmony_ci#if !defined(arch_atomic_sub_return_relaxed) || defined(arch_atomic_sub_return) 1578c2ecf20Sopenharmony_cistatic __always_inline int 1588c2ecf20Sopenharmony_ciatomic_sub_return(int i, atomic_t *v) 1598c2ecf20Sopenharmony_ci{ 1608c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1618c2ecf20Sopenharmony_ci return arch_atomic_sub_return(i, v); 1628c2ecf20Sopenharmony_ci} 1638c2ecf20Sopenharmony_ci#define atomic_sub_return atomic_sub_return 1648c2ecf20Sopenharmony_ci#endif 1658c2ecf20Sopenharmony_ci 1668c2ecf20Sopenharmony_ci#if defined(arch_atomic_sub_return_acquire) 1678c2ecf20Sopenharmony_cistatic __always_inline int 1688c2ecf20Sopenharmony_ciatomic_sub_return_acquire(int i, atomic_t *v) 1698c2ecf20Sopenharmony_ci{ 1708c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1718c2ecf20Sopenharmony_ci return arch_atomic_sub_return_acquire(i, v); 1728c2ecf20Sopenharmony_ci} 1738c2ecf20Sopenharmony_ci#define atomic_sub_return_acquire atomic_sub_return_acquire 1748c2ecf20Sopenharmony_ci#endif 1758c2ecf20Sopenharmony_ci 1768c2ecf20Sopenharmony_ci#if defined(arch_atomic_sub_return_release) 1778c2ecf20Sopenharmony_cistatic __always_inline int 1788c2ecf20Sopenharmony_ciatomic_sub_return_release(int i, atomic_t *v) 1798c2ecf20Sopenharmony_ci{ 1808c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1818c2ecf20Sopenharmony_ci return arch_atomic_sub_return_release(i, v); 1828c2ecf20Sopenharmony_ci} 1838c2ecf20Sopenharmony_ci#define atomic_sub_return_release atomic_sub_return_release 1848c2ecf20Sopenharmony_ci#endif 1858c2ecf20Sopenharmony_ci 1868c2ecf20Sopenharmony_ci#if defined(arch_atomic_sub_return_relaxed) 1878c2ecf20Sopenharmony_cistatic __always_inline int 1888c2ecf20Sopenharmony_ciatomic_sub_return_relaxed(int i, atomic_t *v) 1898c2ecf20Sopenharmony_ci{ 1908c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 1918c2ecf20Sopenharmony_ci return arch_atomic_sub_return_relaxed(i, v); 1928c2ecf20Sopenharmony_ci} 1938c2ecf20Sopenharmony_ci#define atomic_sub_return_relaxed atomic_sub_return_relaxed 1948c2ecf20Sopenharmony_ci#endif 1958c2ecf20Sopenharmony_ci 1968c2ecf20Sopenharmony_ci#if !defined(arch_atomic_fetch_sub_relaxed) || defined(arch_atomic_fetch_sub) 1978c2ecf20Sopenharmony_cistatic __always_inline int 1988c2ecf20Sopenharmony_ciatomic_fetch_sub(int i, atomic_t *v) 1998c2ecf20Sopenharmony_ci{ 2008c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2018c2ecf20Sopenharmony_ci return arch_atomic_fetch_sub(i, v); 2028c2ecf20Sopenharmony_ci} 2038c2ecf20Sopenharmony_ci#define atomic_fetch_sub atomic_fetch_sub 2048c2ecf20Sopenharmony_ci#endif 2058c2ecf20Sopenharmony_ci 2068c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_sub_acquire) 2078c2ecf20Sopenharmony_cistatic __always_inline int 2088c2ecf20Sopenharmony_ciatomic_fetch_sub_acquire(int i, atomic_t *v) 2098c2ecf20Sopenharmony_ci{ 2108c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2118c2ecf20Sopenharmony_ci return arch_atomic_fetch_sub_acquire(i, v); 2128c2ecf20Sopenharmony_ci} 2138c2ecf20Sopenharmony_ci#define atomic_fetch_sub_acquire atomic_fetch_sub_acquire 2148c2ecf20Sopenharmony_ci#endif 2158c2ecf20Sopenharmony_ci 2168c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_sub_release) 2178c2ecf20Sopenharmony_cistatic __always_inline int 2188c2ecf20Sopenharmony_ciatomic_fetch_sub_release(int i, atomic_t *v) 2198c2ecf20Sopenharmony_ci{ 2208c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2218c2ecf20Sopenharmony_ci return arch_atomic_fetch_sub_release(i, v); 2228c2ecf20Sopenharmony_ci} 2238c2ecf20Sopenharmony_ci#define atomic_fetch_sub_release atomic_fetch_sub_release 2248c2ecf20Sopenharmony_ci#endif 2258c2ecf20Sopenharmony_ci 2268c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_sub_relaxed) 2278c2ecf20Sopenharmony_cistatic __always_inline int 2288c2ecf20Sopenharmony_ciatomic_fetch_sub_relaxed(int i, atomic_t *v) 2298c2ecf20Sopenharmony_ci{ 2308c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2318c2ecf20Sopenharmony_ci return arch_atomic_fetch_sub_relaxed(i, v); 2328c2ecf20Sopenharmony_ci} 2338c2ecf20Sopenharmony_ci#define atomic_fetch_sub_relaxed atomic_fetch_sub_relaxed 2348c2ecf20Sopenharmony_ci#endif 2358c2ecf20Sopenharmony_ci 2368c2ecf20Sopenharmony_ci#if defined(arch_atomic_inc) 2378c2ecf20Sopenharmony_cistatic __always_inline void 2388c2ecf20Sopenharmony_ciatomic_inc(atomic_t *v) 2398c2ecf20Sopenharmony_ci{ 2408c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2418c2ecf20Sopenharmony_ci arch_atomic_inc(v); 2428c2ecf20Sopenharmony_ci} 2438c2ecf20Sopenharmony_ci#define atomic_inc atomic_inc 2448c2ecf20Sopenharmony_ci#endif 2458c2ecf20Sopenharmony_ci 2468c2ecf20Sopenharmony_ci#if defined(arch_atomic_inc_return) 2478c2ecf20Sopenharmony_cistatic __always_inline int 2488c2ecf20Sopenharmony_ciatomic_inc_return(atomic_t *v) 2498c2ecf20Sopenharmony_ci{ 2508c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2518c2ecf20Sopenharmony_ci return arch_atomic_inc_return(v); 2528c2ecf20Sopenharmony_ci} 2538c2ecf20Sopenharmony_ci#define atomic_inc_return atomic_inc_return 2548c2ecf20Sopenharmony_ci#endif 2558c2ecf20Sopenharmony_ci 2568c2ecf20Sopenharmony_ci#if defined(arch_atomic_inc_return_acquire) 2578c2ecf20Sopenharmony_cistatic __always_inline int 2588c2ecf20Sopenharmony_ciatomic_inc_return_acquire(atomic_t *v) 2598c2ecf20Sopenharmony_ci{ 2608c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2618c2ecf20Sopenharmony_ci return arch_atomic_inc_return_acquire(v); 2628c2ecf20Sopenharmony_ci} 2638c2ecf20Sopenharmony_ci#define atomic_inc_return_acquire atomic_inc_return_acquire 2648c2ecf20Sopenharmony_ci#endif 2658c2ecf20Sopenharmony_ci 2668c2ecf20Sopenharmony_ci#if defined(arch_atomic_inc_return_release) 2678c2ecf20Sopenharmony_cistatic __always_inline int 2688c2ecf20Sopenharmony_ciatomic_inc_return_release(atomic_t *v) 2698c2ecf20Sopenharmony_ci{ 2708c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2718c2ecf20Sopenharmony_ci return arch_atomic_inc_return_release(v); 2728c2ecf20Sopenharmony_ci} 2738c2ecf20Sopenharmony_ci#define atomic_inc_return_release atomic_inc_return_release 2748c2ecf20Sopenharmony_ci#endif 2758c2ecf20Sopenharmony_ci 2768c2ecf20Sopenharmony_ci#if defined(arch_atomic_inc_return_relaxed) 2778c2ecf20Sopenharmony_cistatic __always_inline int 2788c2ecf20Sopenharmony_ciatomic_inc_return_relaxed(atomic_t *v) 2798c2ecf20Sopenharmony_ci{ 2808c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2818c2ecf20Sopenharmony_ci return arch_atomic_inc_return_relaxed(v); 2828c2ecf20Sopenharmony_ci} 2838c2ecf20Sopenharmony_ci#define atomic_inc_return_relaxed atomic_inc_return_relaxed 2848c2ecf20Sopenharmony_ci#endif 2858c2ecf20Sopenharmony_ci 2868c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_inc) 2878c2ecf20Sopenharmony_cistatic __always_inline int 2888c2ecf20Sopenharmony_ciatomic_fetch_inc(atomic_t *v) 2898c2ecf20Sopenharmony_ci{ 2908c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 2918c2ecf20Sopenharmony_ci return arch_atomic_fetch_inc(v); 2928c2ecf20Sopenharmony_ci} 2938c2ecf20Sopenharmony_ci#define atomic_fetch_inc atomic_fetch_inc 2948c2ecf20Sopenharmony_ci#endif 2958c2ecf20Sopenharmony_ci 2968c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_inc_acquire) 2978c2ecf20Sopenharmony_cistatic __always_inline int 2988c2ecf20Sopenharmony_ciatomic_fetch_inc_acquire(atomic_t *v) 2998c2ecf20Sopenharmony_ci{ 3008c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3018c2ecf20Sopenharmony_ci return arch_atomic_fetch_inc_acquire(v); 3028c2ecf20Sopenharmony_ci} 3038c2ecf20Sopenharmony_ci#define atomic_fetch_inc_acquire atomic_fetch_inc_acquire 3048c2ecf20Sopenharmony_ci#endif 3058c2ecf20Sopenharmony_ci 3068c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_inc_release) 3078c2ecf20Sopenharmony_cistatic __always_inline int 3088c2ecf20Sopenharmony_ciatomic_fetch_inc_release(atomic_t *v) 3098c2ecf20Sopenharmony_ci{ 3108c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3118c2ecf20Sopenharmony_ci return arch_atomic_fetch_inc_release(v); 3128c2ecf20Sopenharmony_ci} 3138c2ecf20Sopenharmony_ci#define atomic_fetch_inc_release atomic_fetch_inc_release 3148c2ecf20Sopenharmony_ci#endif 3158c2ecf20Sopenharmony_ci 3168c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_inc_relaxed) 3178c2ecf20Sopenharmony_cistatic __always_inline int 3188c2ecf20Sopenharmony_ciatomic_fetch_inc_relaxed(atomic_t *v) 3198c2ecf20Sopenharmony_ci{ 3208c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3218c2ecf20Sopenharmony_ci return arch_atomic_fetch_inc_relaxed(v); 3228c2ecf20Sopenharmony_ci} 3238c2ecf20Sopenharmony_ci#define atomic_fetch_inc_relaxed atomic_fetch_inc_relaxed 3248c2ecf20Sopenharmony_ci#endif 3258c2ecf20Sopenharmony_ci 3268c2ecf20Sopenharmony_ci#if defined(arch_atomic_dec) 3278c2ecf20Sopenharmony_cistatic __always_inline void 3288c2ecf20Sopenharmony_ciatomic_dec(atomic_t *v) 3298c2ecf20Sopenharmony_ci{ 3308c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3318c2ecf20Sopenharmony_ci arch_atomic_dec(v); 3328c2ecf20Sopenharmony_ci} 3338c2ecf20Sopenharmony_ci#define atomic_dec atomic_dec 3348c2ecf20Sopenharmony_ci#endif 3358c2ecf20Sopenharmony_ci 3368c2ecf20Sopenharmony_ci#if defined(arch_atomic_dec_return) 3378c2ecf20Sopenharmony_cistatic __always_inline int 3388c2ecf20Sopenharmony_ciatomic_dec_return(atomic_t *v) 3398c2ecf20Sopenharmony_ci{ 3408c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3418c2ecf20Sopenharmony_ci return arch_atomic_dec_return(v); 3428c2ecf20Sopenharmony_ci} 3438c2ecf20Sopenharmony_ci#define atomic_dec_return atomic_dec_return 3448c2ecf20Sopenharmony_ci#endif 3458c2ecf20Sopenharmony_ci 3468c2ecf20Sopenharmony_ci#if defined(arch_atomic_dec_return_acquire) 3478c2ecf20Sopenharmony_cistatic __always_inline int 3488c2ecf20Sopenharmony_ciatomic_dec_return_acquire(atomic_t *v) 3498c2ecf20Sopenharmony_ci{ 3508c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3518c2ecf20Sopenharmony_ci return arch_atomic_dec_return_acquire(v); 3528c2ecf20Sopenharmony_ci} 3538c2ecf20Sopenharmony_ci#define atomic_dec_return_acquire atomic_dec_return_acquire 3548c2ecf20Sopenharmony_ci#endif 3558c2ecf20Sopenharmony_ci 3568c2ecf20Sopenharmony_ci#if defined(arch_atomic_dec_return_release) 3578c2ecf20Sopenharmony_cistatic __always_inline int 3588c2ecf20Sopenharmony_ciatomic_dec_return_release(atomic_t *v) 3598c2ecf20Sopenharmony_ci{ 3608c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3618c2ecf20Sopenharmony_ci return arch_atomic_dec_return_release(v); 3628c2ecf20Sopenharmony_ci} 3638c2ecf20Sopenharmony_ci#define atomic_dec_return_release atomic_dec_return_release 3648c2ecf20Sopenharmony_ci#endif 3658c2ecf20Sopenharmony_ci 3668c2ecf20Sopenharmony_ci#if defined(arch_atomic_dec_return_relaxed) 3678c2ecf20Sopenharmony_cistatic __always_inline int 3688c2ecf20Sopenharmony_ciatomic_dec_return_relaxed(atomic_t *v) 3698c2ecf20Sopenharmony_ci{ 3708c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3718c2ecf20Sopenharmony_ci return arch_atomic_dec_return_relaxed(v); 3728c2ecf20Sopenharmony_ci} 3738c2ecf20Sopenharmony_ci#define atomic_dec_return_relaxed atomic_dec_return_relaxed 3748c2ecf20Sopenharmony_ci#endif 3758c2ecf20Sopenharmony_ci 3768c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_dec) 3778c2ecf20Sopenharmony_cistatic __always_inline int 3788c2ecf20Sopenharmony_ciatomic_fetch_dec(atomic_t *v) 3798c2ecf20Sopenharmony_ci{ 3808c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3818c2ecf20Sopenharmony_ci return arch_atomic_fetch_dec(v); 3828c2ecf20Sopenharmony_ci} 3838c2ecf20Sopenharmony_ci#define atomic_fetch_dec atomic_fetch_dec 3848c2ecf20Sopenharmony_ci#endif 3858c2ecf20Sopenharmony_ci 3868c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_dec_acquire) 3878c2ecf20Sopenharmony_cistatic __always_inline int 3888c2ecf20Sopenharmony_ciatomic_fetch_dec_acquire(atomic_t *v) 3898c2ecf20Sopenharmony_ci{ 3908c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 3918c2ecf20Sopenharmony_ci return arch_atomic_fetch_dec_acquire(v); 3928c2ecf20Sopenharmony_ci} 3938c2ecf20Sopenharmony_ci#define atomic_fetch_dec_acquire atomic_fetch_dec_acquire 3948c2ecf20Sopenharmony_ci#endif 3958c2ecf20Sopenharmony_ci 3968c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_dec_release) 3978c2ecf20Sopenharmony_cistatic __always_inline int 3988c2ecf20Sopenharmony_ciatomic_fetch_dec_release(atomic_t *v) 3998c2ecf20Sopenharmony_ci{ 4008c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4018c2ecf20Sopenharmony_ci return arch_atomic_fetch_dec_release(v); 4028c2ecf20Sopenharmony_ci} 4038c2ecf20Sopenharmony_ci#define atomic_fetch_dec_release atomic_fetch_dec_release 4048c2ecf20Sopenharmony_ci#endif 4058c2ecf20Sopenharmony_ci 4068c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_dec_relaxed) 4078c2ecf20Sopenharmony_cistatic __always_inline int 4088c2ecf20Sopenharmony_ciatomic_fetch_dec_relaxed(atomic_t *v) 4098c2ecf20Sopenharmony_ci{ 4108c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4118c2ecf20Sopenharmony_ci return arch_atomic_fetch_dec_relaxed(v); 4128c2ecf20Sopenharmony_ci} 4138c2ecf20Sopenharmony_ci#define atomic_fetch_dec_relaxed atomic_fetch_dec_relaxed 4148c2ecf20Sopenharmony_ci#endif 4158c2ecf20Sopenharmony_ci 4168c2ecf20Sopenharmony_cistatic __always_inline void 4178c2ecf20Sopenharmony_ciatomic_and(int i, atomic_t *v) 4188c2ecf20Sopenharmony_ci{ 4198c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4208c2ecf20Sopenharmony_ci arch_atomic_and(i, v); 4218c2ecf20Sopenharmony_ci} 4228c2ecf20Sopenharmony_ci#define atomic_and atomic_and 4238c2ecf20Sopenharmony_ci 4248c2ecf20Sopenharmony_ci#if !defined(arch_atomic_fetch_and_relaxed) || defined(arch_atomic_fetch_and) 4258c2ecf20Sopenharmony_cistatic __always_inline int 4268c2ecf20Sopenharmony_ciatomic_fetch_and(int i, atomic_t *v) 4278c2ecf20Sopenharmony_ci{ 4288c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4298c2ecf20Sopenharmony_ci return arch_atomic_fetch_and(i, v); 4308c2ecf20Sopenharmony_ci} 4318c2ecf20Sopenharmony_ci#define atomic_fetch_and atomic_fetch_and 4328c2ecf20Sopenharmony_ci#endif 4338c2ecf20Sopenharmony_ci 4348c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_and_acquire) 4358c2ecf20Sopenharmony_cistatic __always_inline int 4368c2ecf20Sopenharmony_ciatomic_fetch_and_acquire(int i, atomic_t *v) 4378c2ecf20Sopenharmony_ci{ 4388c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4398c2ecf20Sopenharmony_ci return arch_atomic_fetch_and_acquire(i, v); 4408c2ecf20Sopenharmony_ci} 4418c2ecf20Sopenharmony_ci#define atomic_fetch_and_acquire atomic_fetch_and_acquire 4428c2ecf20Sopenharmony_ci#endif 4438c2ecf20Sopenharmony_ci 4448c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_and_release) 4458c2ecf20Sopenharmony_cistatic __always_inline int 4468c2ecf20Sopenharmony_ciatomic_fetch_and_release(int i, atomic_t *v) 4478c2ecf20Sopenharmony_ci{ 4488c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4498c2ecf20Sopenharmony_ci return arch_atomic_fetch_and_release(i, v); 4508c2ecf20Sopenharmony_ci} 4518c2ecf20Sopenharmony_ci#define atomic_fetch_and_release atomic_fetch_and_release 4528c2ecf20Sopenharmony_ci#endif 4538c2ecf20Sopenharmony_ci 4548c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_and_relaxed) 4558c2ecf20Sopenharmony_cistatic __always_inline int 4568c2ecf20Sopenharmony_ciatomic_fetch_and_relaxed(int i, atomic_t *v) 4578c2ecf20Sopenharmony_ci{ 4588c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4598c2ecf20Sopenharmony_ci return arch_atomic_fetch_and_relaxed(i, v); 4608c2ecf20Sopenharmony_ci} 4618c2ecf20Sopenharmony_ci#define atomic_fetch_and_relaxed atomic_fetch_and_relaxed 4628c2ecf20Sopenharmony_ci#endif 4638c2ecf20Sopenharmony_ci 4648c2ecf20Sopenharmony_ci#if defined(arch_atomic_andnot) 4658c2ecf20Sopenharmony_cistatic __always_inline void 4668c2ecf20Sopenharmony_ciatomic_andnot(int i, atomic_t *v) 4678c2ecf20Sopenharmony_ci{ 4688c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4698c2ecf20Sopenharmony_ci arch_atomic_andnot(i, v); 4708c2ecf20Sopenharmony_ci} 4718c2ecf20Sopenharmony_ci#define atomic_andnot atomic_andnot 4728c2ecf20Sopenharmony_ci#endif 4738c2ecf20Sopenharmony_ci 4748c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_andnot) 4758c2ecf20Sopenharmony_cistatic __always_inline int 4768c2ecf20Sopenharmony_ciatomic_fetch_andnot(int i, atomic_t *v) 4778c2ecf20Sopenharmony_ci{ 4788c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4798c2ecf20Sopenharmony_ci return arch_atomic_fetch_andnot(i, v); 4808c2ecf20Sopenharmony_ci} 4818c2ecf20Sopenharmony_ci#define atomic_fetch_andnot atomic_fetch_andnot 4828c2ecf20Sopenharmony_ci#endif 4838c2ecf20Sopenharmony_ci 4848c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_andnot_acquire) 4858c2ecf20Sopenharmony_cistatic __always_inline int 4868c2ecf20Sopenharmony_ciatomic_fetch_andnot_acquire(int i, atomic_t *v) 4878c2ecf20Sopenharmony_ci{ 4888c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4898c2ecf20Sopenharmony_ci return arch_atomic_fetch_andnot_acquire(i, v); 4908c2ecf20Sopenharmony_ci} 4918c2ecf20Sopenharmony_ci#define atomic_fetch_andnot_acquire atomic_fetch_andnot_acquire 4928c2ecf20Sopenharmony_ci#endif 4938c2ecf20Sopenharmony_ci 4948c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_andnot_release) 4958c2ecf20Sopenharmony_cistatic __always_inline int 4968c2ecf20Sopenharmony_ciatomic_fetch_andnot_release(int i, atomic_t *v) 4978c2ecf20Sopenharmony_ci{ 4988c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 4998c2ecf20Sopenharmony_ci return arch_atomic_fetch_andnot_release(i, v); 5008c2ecf20Sopenharmony_ci} 5018c2ecf20Sopenharmony_ci#define atomic_fetch_andnot_release atomic_fetch_andnot_release 5028c2ecf20Sopenharmony_ci#endif 5038c2ecf20Sopenharmony_ci 5048c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_andnot_relaxed) 5058c2ecf20Sopenharmony_cistatic __always_inline int 5068c2ecf20Sopenharmony_ciatomic_fetch_andnot_relaxed(int i, atomic_t *v) 5078c2ecf20Sopenharmony_ci{ 5088c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5098c2ecf20Sopenharmony_ci return arch_atomic_fetch_andnot_relaxed(i, v); 5108c2ecf20Sopenharmony_ci} 5118c2ecf20Sopenharmony_ci#define atomic_fetch_andnot_relaxed atomic_fetch_andnot_relaxed 5128c2ecf20Sopenharmony_ci#endif 5138c2ecf20Sopenharmony_ci 5148c2ecf20Sopenharmony_cistatic __always_inline void 5158c2ecf20Sopenharmony_ciatomic_or(int i, atomic_t *v) 5168c2ecf20Sopenharmony_ci{ 5178c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5188c2ecf20Sopenharmony_ci arch_atomic_or(i, v); 5198c2ecf20Sopenharmony_ci} 5208c2ecf20Sopenharmony_ci#define atomic_or atomic_or 5218c2ecf20Sopenharmony_ci 5228c2ecf20Sopenharmony_ci#if !defined(arch_atomic_fetch_or_relaxed) || defined(arch_atomic_fetch_or) 5238c2ecf20Sopenharmony_cistatic __always_inline int 5248c2ecf20Sopenharmony_ciatomic_fetch_or(int i, atomic_t *v) 5258c2ecf20Sopenharmony_ci{ 5268c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5278c2ecf20Sopenharmony_ci return arch_atomic_fetch_or(i, v); 5288c2ecf20Sopenharmony_ci} 5298c2ecf20Sopenharmony_ci#define atomic_fetch_or atomic_fetch_or 5308c2ecf20Sopenharmony_ci#endif 5318c2ecf20Sopenharmony_ci 5328c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_or_acquire) 5338c2ecf20Sopenharmony_cistatic __always_inline int 5348c2ecf20Sopenharmony_ciatomic_fetch_or_acquire(int i, atomic_t *v) 5358c2ecf20Sopenharmony_ci{ 5368c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5378c2ecf20Sopenharmony_ci return arch_atomic_fetch_or_acquire(i, v); 5388c2ecf20Sopenharmony_ci} 5398c2ecf20Sopenharmony_ci#define atomic_fetch_or_acquire atomic_fetch_or_acquire 5408c2ecf20Sopenharmony_ci#endif 5418c2ecf20Sopenharmony_ci 5428c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_or_release) 5438c2ecf20Sopenharmony_cistatic __always_inline int 5448c2ecf20Sopenharmony_ciatomic_fetch_or_release(int i, atomic_t *v) 5458c2ecf20Sopenharmony_ci{ 5468c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5478c2ecf20Sopenharmony_ci return arch_atomic_fetch_or_release(i, v); 5488c2ecf20Sopenharmony_ci} 5498c2ecf20Sopenharmony_ci#define atomic_fetch_or_release atomic_fetch_or_release 5508c2ecf20Sopenharmony_ci#endif 5518c2ecf20Sopenharmony_ci 5528c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_or_relaxed) 5538c2ecf20Sopenharmony_cistatic __always_inline int 5548c2ecf20Sopenharmony_ciatomic_fetch_or_relaxed(int i, atomic_t *v) 5558c2ecf20Sopenharmony_ci{ 5568c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5578c2ecf20Sopenharmony_ci return arch_atomic_fetch_or_relaxed(i, v); 5588c2ecf20Sopenharmony_ci} 5598c2ecf20Sopenharmony_ci#define atomic_fetch_or_relaxed atomic_fetch_or_relaxed 5608c2ecf20Sopenharmony_ci#endif 5618c2ecf20Sopenharmony_ci 5628c2ecf20Sopenharmony_cistatic __always_inline void 5638c2ecf20Sopenharmony_ciatomic_xor(int i, atomic_t *v) 5648c2ecf20Sopenharmony_ci{ 5658c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5668c2ecf20Sopenharmony_ci arch_atomic_xor(i, v); 5678c2ecf20Sopenharmony_ci} 5688c2ecf20Sopenharmony_ci#define atomic_xor atomic_xor 5698c2ecf20Sopenharmony_ci 5708c2ecf20Sopenharmony_ci#if !defined(arch_atomic_fetch_xor_relaxed) || defined(arch_atomic_fetch_xor) 5718c2ecf20Sopenharmony_cistatic __always_inline int 5728c2ecf20Sopenharmony_ciatomic_fetch_xor(int i, atomic_t *v) 5738c2ecf20Sopenharmony_ci{ 5748c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5758c2ecf20Sopenharmony_ci return arch_atomic_fetch_xor(i, v); 5768c2ecf20Sopenharmony_ci} 5778c2ecf20Sopenharmony_ci#define atomic_fetch_xor atomic_fetch_xor 5788c2ecf20Sopenharmony_ci#endif 5798c2ecf20Sopenharmony_ci 5808c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_xor_acquire) 5818c2ecf20Sopenharmony_cistatic __always_inline int 5828c2ecf20Sopenharmony_ciatomic_fetch_xor_acquire(int i, atomic_t *v) 5838c2ecf20Sopenharmony_ci{ 5848c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5858c2ecf20Sopenharmony_ci return arch_atomic_fetch_xor_acquire(i, v); 5868c2ecf20Sopenharmony_ci} 5878c2ecf20Sopenharmony_ci#define atomic_fetch_xor_acquire atomic_fetch_xor_acquire 5888c2ecf20Sopenharmony_ci#endif 5898c2ecf20Sopenharmony_ci 5908c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_xor_release) 5918c2ecf20Sopenharmony_cistatic __always_inline int 5928c2ecf20Sopenharmony_ciatomic_fetch_xor_release(int i, atomic_t *v) 5938c2ecf20Sopenharmony_ci{ 5948c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 5958c2ecf20Sopenharmony_ci return arch_atomic_fetch_xor_release(i, v); 5968c2ecf20Sopenharmony_ci} 5978c2ecf20Sopenharmony_ci#define atomic_fetch_xor_release atomic_fetch_xor_release 5988c2ecf20Sopenharmony_ci#endif 5998c2ecf20Sopenharmony_ci 6008c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_xor_relaxed) 6018c2ecf20Sopenharmony_cistatic __always_inline int 6028c2ecf20Sopenharmony_ciatomic_fetch_xor_relaxed(int i, atomic_t *v) 6038c2ecf20Sopenharmony_ci{ 6048c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6058c2ecf20Sopenharmony_ci return arch_atomic_fetch_xor_relaxed(i, v); 6068c2ecf20Sopenharmony_ci} 6078c2ecf20Sopenharmony_ci#define atomic_fetch_xor_relaxed atomic_fetch_xor_relaxed 6088c2ecf20Sopenharmony_ci#endif 6098c2ecf20Sopenharmony_ci 6108c2ecf20Sopenharmony_ci#if !defined(arch_atomic_xchg_relaxed) || defined(arch_atomic_xchg) 6118c2ecf20Sopenharmony_cistatic __always_inline int 6128c2ecf20Sopenharmony_ciatomic_xchg(atomic_t *v, int i) 6138c2ecf20Sopenharmony_ci{ 6148c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6158c2ecf20Sopenharmony_ci return arch_atomic_xchg(v, i); 6168c2ecf20Sopenharmony_ci} 6178c2ecf20Sopenharmony_ci#define atomic_xchg atomic_xchg 6188c2ecf20Sopenharmony_ci#endif 6198c2ecf20Sopenharmony_ci 6208c2ecf20Sopenharmony_ci#if defined(arch_atomic_xchg_acquire) 6218c2ecf20Sopenharmony_cistatic __always_inline int 6228c2ecf20Sopenharmony_ciatomic_xchg_acquire(atomic_t *v, int i) 6238c2ecf20Sopenharmony_ci{ 6248c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6258c2ecf20Sopenharmony_ci return arch_atomic_xchg_acquire(v, i); 6268c2ecf20Sopenharmony_ci} 6278c2ecf20Sopenharmony_ci#define atomic_xchg_acquire atomic_xchg_acquire 6288c2ecf20Sopenharmony_ci#endif 6298c2ecf20Sopenharmony_ci 6308c2ecf20Sopenharmony_ci#if defined(arch_atomic_xchg_release) 6318c2ecf20Sopenharmony_cistatic __always_inline int 6328c2ecf20Sopenharmony_ciatomic_xchg_release(atomic_t *v, int i) 6338c2ecf20Sopenharmony_ci{ 6348c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6358c2ecf20Sopenharmony_ci return arch_atomic_xchg_release(v, i); 6368c2ecf20Sopenharmony_ci} 6378c2ecf20Sopenharmony_ci#define atomic_xchg_release atomic_xchg_release 6388c2ecf20Sopenharmony_ci#endif 6398c2ecf20Sopenharmony_ci 6408c2ecf20Sopenharmony_ci#if defined(arch_atomic_xchg_relaxed) 6418c2ecf20Sopenharmony_cistatic __always_inline int 6428c2ecf20Sopenharmony_ciatomic_xchg_relaxed(atomic_t *v, int i) 6438c2ecf20Sopenharmony_ci{ 6448c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6458c2ecf20Sopenharmony_ci return arch_atomic_xchg_relaxed(v, i); 6468c2ecf20Sopenharmony_ci} 6478c2ecf20Sopenharmony_ci#define atomic_xchg_relaxed atomic_xchg_relaxed 6488c2ecf20Sopenharmony_ci#endif 6498c2ecf20Sopenharmony_ci 6508c2ecf20Sopenharmony_ci#if !defined(arch_atomic_cmpxchg_relaxed) || defined(arch_atomic_cmpxchg) 6518c2ecf20Sopenharmony_cistatic __always_inline int 6528c2ecf20Sopenharmony_ciatomic_cmpxchg(atomic_t *v, int old, int new) 6538c2ecf20Sopenharmony_ci{ 6548c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6558c2ecf20Sopenharmony_ci return arch_atomic_cmpxchg(v, old, new); 6568c2ecf20Sopenharmony_ci} 6578c2ecf20Sopenharmony_ci#define atomic_cmpxchg atomic_cmpxchg 6588c2ecf20Sopenharmony_ci#endif 6598c2ecf20Sopenharmony_ci 6608c2ecf20Sopenharmony_ci#if defined(arch_atomic_cmpxchg_acquire) 6618c2ecf20Sopenharmony_cistatic __always_inline int 6628c2ecf20Sopenharmony_ciatomic_cmpxchg_acquire(atomic_t *v, int old, int new) 6638c2ecf20Sopenharmony_ci{ 6648c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6658c2ecf20Sopenharmony_ci return arch_atomic_cmpxchg_acquire(v, old, new); 6668c2ecf20Sopenharmony_ci} 6678c2ecf20Sopenharmony_ci#define atomic_cmpxchg_acquire atomic_cmpxchg_acquire 6688c2ecf20Sopenharmony_ci#endif 6698c2ecf20Sopenharmony_ci 6708c2ecf20Sopenharmony_ci#if defined(arch_atomic_cmpxchg_release) 6718c2ecf20Sopenharmony_cistatic __always_inline int 6728c2ecf20Sopenharmony_ciatomic_cmpxchg_release(atomic_t *v, int old, int new) 6738c2ecf20Sopenharmony_ci{ 6748c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6758c2ecf20Sopenharmony_ci return arch_atomic_cmpxchg_release(v, old, new); 6768c2ecf20Sopenharmony_ci} 6778c2ecf20Sopenharmony_ci#define atomic_cmpxchg_release atomic_cmpxchg_release 6788c2ecf20Sopenharmony_ci#endif 6798c2ecf20Sopenharmony_ci 6808c2ecf20Sopenharmony_ci#if defined(arch_atomic_cmpxchg_relaxed) 6818c2ecf20Sopenharmony_cistatic __always_inline int 6828c2ecf20Sopenharmony_ciatomic_cmpxchg_relaxed(atomic_t *v, int old, int new) 6838c2ecf20Sopenharmony_ci{ 6848c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6858c2ecf20Sopenharmony_ci return arch_atomic_cmpxchg_relaxed(v, old, new); 6868c2ecf20Sopenharmony_ci} 6878c2ecf20Sopenharmony_ci#define atomic_cmpxchg_relaxed atomic_cmpxchg_relaxed 6888c2ecf20Sopenharmony_ci#endif 6898c2ecf20Sopenharmony_ci 6908c2ecf20Sopenharmony_ci#if defined(arch_atomic_try_cmpxchg) 6918c2ecf20Sopenharmony_cistatic __always_inline bool 6928c2ecf20Sopenharmony_ciatomic_try_cmpxchg(atomic_t *v, int *old, int new) 6938c2ecf20Sopenharmony_ci{ 6948c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 6958c2ecf20Sopenharmony_ci instrument_atomic_read_write(old, sizeof(*old)); 6968c2ecf20Sopenharmony_ci return arch_atomic_try_cmpxchg(v, old, new); 6978c2ecf20Sopenharmony_ci} 6988c2ecf20Sopenharmony_ci#define atomic_try_cmpxchg atomic_try_cmpxchg 6998c2ecf20Sopenharmony_ci#endif 7008c2ecf20Sopenharmony_ci 7018c2ecf20Sopenharmony_ci#if defined(arch_atomic_try_cmpxchg_acquire) 7028c2ecf20Sopenharmony_cistatic __always_inline bool 7038c2ecf20Sopenharmony_ciatomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new) 7048c2ecf20Sopenharmony_ci{ 7058c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7068c2ecf20Sopenharmony_ci instrument_atomic_read_write(old, sizeof(*old)); 7078c2ecf20Sopenharmony_ci return arch_atomic_try_cmpxchg_acquire(v, old, new); 7088c2ecf20Sopenharmony_ci} 7098c2ecf20Sopenharmony_ci#define atomic_try_cmpxchg_acquire atomic_try_cmpxchg_acquire 7108c2ecf20Sopenharmony_ci#endif 7118c2ecf20Sopenharmony_ci 7128c2ecf20Sopenharmony_ci#if defined(arch_atomic_try_cmpxchg_release) 7138c2ecf20Sopenharmony_cistatic __always_inline bool 7148c2ecf20Sopenharmony_ciatomic_try_cmpxchg_release(atomic_t *v, int *old, int new) 7158c2ecf20Sopenharmony_ci{ 7168c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7178c2ecf20Sopenharmony_ci instrument_atomic_read_write(old, sizeof(*old)); 7188c2ecf20Sopenharmony_ci return arch_atomic_try_cmpxchg_release(v, old, new); 7198c2ecf20Sopenharmony_ci} 7208c2ecf20Sopenharmony_ci#define atomic_try_cmpxchg_release atomic_try_cmpxchg_release 7218c2ecf20Sopenharmony_ci#endif 7228c2ecf20Sopenharmony_ci 7238c2ecf20Sopenharmony_ci#if defined(arch_atomic_try_cmpxchg_relaxed) 7248c2ecf20Sopenharmony_cistatic __always_inline bool 7258c2ecf20Sopenharmony_ciatomic_try_cmpxchg_relaxed(atomic_t *v, int *old, int new) 7268c2ecf20Sopenharmony_ci{ 7278c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7288c2ecf20Sopenharmony_ci instrument_atomic_read_write(old, sizeof(*old)); 7298c2ecf20Sopenharmony_ci return arch_atomic_try_cmpxchg_relaxed(v, old, new); 7308c2ecf20Sopenharmony_ci} 7318c2ecf20Sopenharmony_ci#define atomic_try_cmpxchg_relaxed atomic_try_cmpxchg_relaxed 7328c2ecf20Sopenharmony_ci#endif 7338c2ecf20Sopenharmony_ci 7348c2ecf20Sopenharmony_ci#if defined(arch_atomic_sub_and_test) 7358c2ecf20Sopenharmony_cistatic __always_inline bool 7368c2ecf20Sopenharmony_ciatomic_sub_and_test(int i, atomic_t *v) 7378c2ecf20Sopenharmony_ci{ 7388c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7398c2ecf20Sopenharmony_ci return arch_atomic_sub_and_test(i, v); 7408c2ecf20Sopenharmony_ci} 7418c2ecf20Sopenharmony_ci#define atomic_sub_and_test atomic_sub_and_test 7428c2ecf20Sopenharmony_ci#endif 7438c2ecf20Sopenharmony_ci 7448c2ecf20Sopenharmony_ci#if defined(arch_atomic_dec_and_test) 7458c2ecf20Sopenharmony_cistatic __always_inline bool 7468c2ecf20Sopenharmony_ciatomic_dec_and_test(atomic_t *v) 7478c2ecf20Sopenharmony_ci{ 7488c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7498c2ecf20Sopenharmony_ci return arch_atomic_dec_and_test(v); 7508c2ecf20Sopenharmony_ci} 7518c2ecf20Sopenharmony_ci#define atomic_dec_and_test atomic_dec_and_test 7528c2ecf20Sopenharmony_ci#endif 7538c2ecf20Sopenharmony_ci 7548c2ecf20Sopenharmony_ci#if defined(arch_atomic_inc_and_test) 7558c2ecf20Sopenharmony_cistatic __always_inline bool 7568c2ecf20Sopenharmony_ciatomic_inc_and_test(atomic_t *v) 7578c2ecf20Sopenharmony_ci{ 7588c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7598c2ecf20Sopenharmony_ci return arch_atomic_inc_and_test(v); 7608c2ecf20Sopenharmony_ci} 7618c2ecf20Sopenharmony_ci#define atomic_inc_and_test atomic_inc_and_test 7628c2ecf20Sopenharmony_ci#endif 7638c2ecf20Sopenharmony_ci 7648c2ecf20Sopenharmony_ci#if defined(arch_atomic_add_negative) 7658c2ecf20Sopenharmony_cistatic __always_inline bool 7668c2ecf20Sopenharmony_ciatomic_add_negative(int i, atomic_t *v) 7678c2ecf20Sopenharmony_ci{ 7688c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7698c2ecf20Sopenharmony_ci return arch_atomic_add_negative(i, v); 7708c2ecf20Sopenharmony_ci} 7718c2ecf20Sopenharmony_ci#define atomic_add_negative atomic_add_negative 7728c2ecf20Sopenharmony_ci#endif 7738c2ecf20Sopenharmony_ci 7748c2ecf20Sopenharmony_ci#if defined(arch_atomic_fetch_add_unless) 7758c2ecf20Sopenharmony_cistatic __always_inline int 7768c2ecf20Sopenharmony_ciatomic_fetch_add_unless(atomic_t *v, int a, int u) 7778c2ecf20Sopenharmony_ci{ 7788c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7798c2ecf20Sopenharmony_ci return arch_atomic_fetch_add_unless(v, a, u); 7808c2ecf20Sopenharmony_ci} 7818c2ecf20Sopenharmony_ci#define atomic_fetch_add_unless atomic_fetch_add_unless 7828c2ecf20Sopenharmony_ci#endif 7838c2ecf20Sopenharmony_ci 7848c2ecf20Sopenharmony_ci#if defined(arch_atomic_add_unless) 7858c2ecf20Sopenharmony_cistatic __always_inline bool 7868c2ecf20Sopenharmony_ciatomic_add_unless(atomic_t *v, int a, int u) 7878c2ecf20Sopenharmony_ci{ 7888c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7898c2ecf20Sopenharmony_ci return arch_atomic_add_unless(v, a, u); 7908c2ecf20Sopenharmony_ci} 7918c2ecf20Sopenharmony_ci#define atomic_add_unless atomic_add_unless 7928c2ecf20Sopenharmony_ci#endif 7938c2ecf20Sopenharmony_ci 7948c2ecf20Sopenharmony_ci#if defined(arch_atomic_inc_not_zero) 7958c2ecf20Sopenharmony_cistatic __always_inline bool 7968c2ecf20Sopenharmony_ciatomic_inc_not_zero(atomic_t *v) 7978c2ecf20Sopenharmony_ci{ 7988c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 7998c2ecf20Sopenharmony_ci return arch_atomic_inc_not_zero(v); 8008c2ecf20Sopenharmony_ci} 8018c2ecf20Sopenharmony_ci#define atomic_inc_not_zero atomic_inc_not_zero 8028c2ecf20Sopenharmony_ci#endif 8038c2ecf20Sopenharmony_ci 8048c2ecf20Sopenharmony_ci#if defined(arch_atomic_inc_unless_negative) 8058c2ecf20Sopenharmony_cistatic __always_inline bool 8068c2ecf20Sopenharmony_ciatomic_inc_unless_negative(atomic_t *v) 8078c2ecf20Sopenharmony_ci{ 8088c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 8098c2ecf20Sopenharmony_ci return arch_atomic_inc_unless_negative(v); 8108c2ecf20Sopenharmony_ci} 8118c2ecf20Sopenharmony_ci#define atomic_inc_unless_negative atomic_inc_unless_negative 8128c2ecf20Sopenharmony_ci#endif 8138c2ecf20Sopenharmony_ci 8148c2ecf20Sopenharmony_ci#if defined(arch_atomic_dec_unless_positive) 8158c2ecf20Sopenharmony_cistatic __always_inline bool 8168c2ecf20Sopenharmony_ciatomic_dec_unless_positive(atomic_t *v) 8178c2ecf20Sopenharmony_ci{ 8188c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 8198c2ecf20Sopenharmony_ci return arch_atomic_dec_unless_positive(v); 8208c2ecf20Sopenharmony_ci} 8218c2ecf20Sopenharmony_ci#define atomic_dec_unless_positive atomic_dec_unless_positive 8228c2ecf20Sopenharmony_ci#endif 8238c2ecf20Sopenharmony_ci 8248c2ecf20Sopenharmony_ci#if defined(arch_atomic_dec_if_positive) 8258c2ecf20Sopenharmony_cistatic __always_inline int 8268c2ecf20Sopenharmony_ciatomic_dec_if_positive(atomic_t *v) 8278c2ecf20Sopenharmony_ci{ 8288c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 8298c2ecf20Sopenharmony_ci return arch_atomic_dec_if_positive(v); 8308c2ecf20Sopenharmony_ci} 8318c2ecf20Sopenharmony_ci#define atomic_dec_if_positive atomic_dec_if_positive 8328c2ecf20Sopenharmony_ci#endif 8338c2ecf20Sopenharmony_ci 8348c2ecf20Sopenharmony_cistatic __always_inline s64 8358c2ecf20Sopenharmony_ciatomic64_read(const atomic64_t *v) 8368c2ecf20Sopenharmony_ci{ 8378c2ecf20Sopenharmony_ci instrument_atomic_read(v, sizeof(*v)); 8388c2ecf20Sopenharmony_ci return arch_atomic64_read(v); 8398c2ecf20Sopenharmony_ci} 8408c2ecf20Sopenharmony_ci#define atomic64_read atomic64_read 8418c2ecf20Sopenharmony_ci 8428c2ecf20Sopenharmony_ci#if defined(arch_atomic64_read_acquire) 8438c2ecf20Sopenharmony_cistatic __always_inline s64 8448c2ecf20Sopenharmony_ciatomic64_read_acquire(const atomic64_t *v) 8458c2ecf20Sopenharmony_ci{ 8468c2ecf20Sopenharmony_ci instrument_atomic_read(v, sizeof(*v)); 8478c2ecf20Sopenharmony_ci return arch_atomic64_read_acquire(v); 8488c2ecf20Sopenharmony_ci} 8498c2ecf20Sopenharmony_ci#define atomic64_read_acquire atomic64_read_acquire 8508c2ecf20Sopenharmony_ci#endif 8518c2ecf20Sopenharmony_ci 8528c2ecf20Sopenharmony_cistatic __always_inline void 8538c2ecf20Sopenharmony_ciatomic64_set(atomic64_t *v, s64 i) 8548c2ecf20Sopenharmony_ci{ 8558c2ecf20Sopenharmony_ci instrument_atomic_write(v, sizeof(*v)); 8568c2ecf20Sopenharmony_ci arch_atomic64_set(v, i); 8578c2ecf20Sopenharmony_ci} 8588c2ecf20Sopenharmony_ci#define atomic64_set atomic64_set 8598c2ecf20Sopenharmony_ci 8608c2ecf20Sopenharmony_ci#if defined(arch_atomic64_set_release) 8618c2ecf20Sopenharmony_cistatic __always_inline void 8628c2ecf20Sopenharmony_ciatomic64_set_release(atomic64_t *v, s64 i) 8638c2ecf20Sopenharmony_ci{ 8648c2ecf20Sopenharmony_ci instrument_atomic_write(v, sizeof(*v)); 8658c2ecf20Sopenharmony_ci arch_atomic64_set_release(v, i); 8668c2ecf20Sopenharmony_ci} 8678c2ecf20Sopenharmony_ci#define atomic64_set_release atomic64_set_release 8688c2ecf20Sopenharmony_ci#endif 8698c2ecf20Sopenharmony_ci 8708c2ecf20Sopenharmony_cistatic __always_inline void 8718c2ecf20Sopenharmony_ciatomic64_add(s64 i, atomic64_t *v) 8728c2ecf20Sopenharmony_ci{ 8738c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 8748c2ecf20Sopenharmony_ci arch_atomic64_add(i, v); 8758c2ecf20Sopenharmony_ci} 8768c2ecf20Sopenharmony_ci#define atomic64_add atomic64_add 8778c2ecf20Sopenharmony_ci 8788c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_add_return_relaxed) || defined(arch_atomic64_add_return) 8798c2ecf20Sopenharmony_cistatic __always_inline s64 8808c2ecf20Sopenharmony_ciatomic64_add_return(s64 i, atomic64_t *v) 8818c2ecf20Sopenharmony_ci{ 8828c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 8838c2ecf20Sopenharmony_ci return arch_atomic64_add_return(i, v); 8848c2ecf20Sopenharmony_ci} 8858c2ecf20Sopenharmony_ci#define atomic64_add_return atomic64_add_return 8868c2ecf20Sopenharmony_ci#endif 8878c2ecf20Sopenharmony_ci 8888c2ecf20Sopenharmony_ci#if defined(arch_atomic64_add_return_acquire) 8898c2ecf20Sopenharmony_cistatic __always_inline s64 8908c2ecf20Sopenharmony_ciatomic64_add_return_acquire(s64 i, atomic64_t *v) 8918c2ecf20Sopenharmony_ci{ 8928c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 8938c2ecf20Sopenharmony_ci return arch_atomic64_add_return_acquire(i, v); 8948c2ecf20Sopenharmony_ci} 8958c2ecf20Sopenharmony_ci#define atomic64_add_return_acquire atomic64_add_return_acquire 8968c2ecf20Sopenharmony_ci#endif 8978c2ecf20Sopenharmony_ci 8988c2ecf20Sopenharmony_ci#if defined(arch_atomic64_add_return_release) 8998c2ecf20Sopenharmony_cistatic __always_inline s64 9008c2ecf20Sopenharmony_ciatomic64_add_return_release(s64 i, atomic64_t *v) 9018c2ecf20Sopenharmony_ci{ 9028c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9038c2ecf20Sopenharmony_ci return arch_atomic64_add_return_release(i, v); 9048c2ecf20Sopenharmony_ci} 9058c2ecf20Sopenharmony_ci#define atomic64_add_return_release atomic64_add_return_release 9068c2ecf20Sopenharmony_ci#endif 9078c2ecf20Sopenharmony_ci 9088c2ecf20Sopenharmony_ci#if defined(arch_atomic64_add_return_relaxed) 9098c2ecf20Sopenharmony_cistatic __always_inline s64 9108c2ecf20Sopenharmony_ciatomic64_add_return_relaxed(s64 i, atomic64_t *v) 9118c2ecf20Sopenharmony_ci{ 9128c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9138c2ecf20Sopenharmony_ci return arch_atomic64_add_return_relaxed(i, v); 9148c2ecf20Sopenharmony_ci} 9158c2ecf20Sopenharmony_ci#define atomic64_add_return_relaxed atomic64_add_return_relaxed 9168c2ecf20Sopenharmony_ci#endif 9178c2ecf20Sopenharmony_ci 9188c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_fetch_add_relaxed) || defined(arch_atomic64_fetch_add) 9198c2ecf20Sopenharmony_cistatic __always_inline s64 9208c2ecf20Sopenharmony_ciatomic64_fetch_add(s64 i, atomic64_t *v) 9218c2ecf20Sopenharmony_ci{ 9228c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9238c2ecf20Sopenharmony_ci return arch_atomic64_fetch_add(i, v); 9248c2ecf20Sopenharmony_ci} 9258c2ecf20Sopenharmony_ci#define atomic64_fetch_add atomic64_fetch_add 9268c2ecf20Sopenharmony_ci#endif 9278c2ecf20Sopenharmony_ci 9288c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_add_acquire) 9298c2ecf20Sopenharmony_cistatic __always_inline s64 9308c2ecf20Sopenharmony_ciatomic64_fetch_add_acquire(s64 i, atomic64_t *v) 9318c2ecf20Sopenharmony_ci{ 9328c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9338c2ecf20Sopenharmony_ci return arch_atomic64_fetch_add_acquire(i, v); 9348c2ecf20Sopenharmony_ci} 9358c2ecf20Sopenharmony_ci#define atomic64_fetch_add_acquire atomic64_fetch_add_acquire 9368c2ecf20Sopenharmony_ci#endif 9378c2ecf20Sopenharmony_ci 9388c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_add_release) 9398c2ecf20Sopenharmony_cistatic __always_inline s64 9408c2ecf20Sopenharmony_ciatomic64_fetch_add_release(s64 i, atomic64_t *v) 9418c2ecf20Sopenharmony_ci{ 9428c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9438c2ecf20Sopenharmony_ci return arch_atomic64_fetch_add_release(i, v); 9448c2ecf20Sopenharmony_ci} 9458c2ecf20Sopenharmony_ci#define atomic64_fetch_add_release atomic64_fetch_add_release 9468c2ecf20Sopenharmony_ci#endif 9478c2ecf20Sopenharmony_ci 9488c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_add_relaxed) 9498c2ecf20Sopenharmony_cistatic __always_inline s64 9508c2ecf20Sopenharmony_ciatomic64_fetch_add_relaxed(s64 i, atomic64_t *v) 9518c2ecf20Sopenharmony_ci{ 9528c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9538c2ecf20Sopenharmony_ci return arch_atomic64_fetch_add_relaxed(i, v); 9548c2ecf20Sopenharmony_ci} 9558c2ecf20Sopenharmony_ci#define atomic64_fetch_add_relaxed atomic64_fetch_add_relaxed 9568c2ecf20Sopenharmony_ci#endif 9578c2ecf20Sopenharmony_ci 9588c2ecf20Sopenharmony_cistatic __always_inline void 9598c2ecf20Sopenharmony_ciatomic64_sub(s64 i, atomic64_t *v) 9608c2ecf20Sopenharmony_ci{ 9618c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9628c2ecf20Sopenharmony_ci arch_atomic64_sub(i, v); 9638c2ecf20Sopenharmony_ci} 9648c2ecf20Sopenharmony_ci#define atomic64_sub atomic64_sub 9658c2ecf20Sopenharmony_ci 9668c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_sub_return_relaxed) || defined(arch_atomic64_sub_return) 9678c2ecf20Sopenharmony_cistatic __always_inline s64 9688c2ecf20Sopenharmony_ciatomic64_sub_return(s64 i, atomic64_t *v) 9698c2ecf20Sopenharmony_ci{ 9708c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9718c2ecf20Sopenharmony_ci return arch_atomic64_sub_return(i, v); 9728c2ecf20Sopenharmony_ci} 9738c2ecf20Sopenharmony_ci#define atomic64_sub_return atomic64_sub_return 9748c2ecf20Sopenharmony_ci#endif 9758c2ecf20Sopenharmony_ci 9768c2ecf20Sopenharmony_ci#if defined(arch_atomic64_sub_return_acquire) 9778c2ecf20Sopenharmony_cistatic __always_inline s64 9788c2ecf20Sopenharmony_ciatomic64_sub_return_acquire(s64 i, atomic64_t *v) 9798c2ecf20Sopenharmony_ci{ 9808c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9818c2ecf20Sopenharmony_ci return arch_atomic64_sub_return_acquire(i, v); 9828c2ecf20Sopenharmony_ci} 9838c2ecf20Sopenharmony_ci#define atomic64_sub_return_acquire atomic64_sub_return_acquire 9848c2ecf20Sopenharmony_ci#endif 9858c2ecf20Sopenharmony_ci 9868c2ecf20Sopenharmony_ci#if defined(arch_atomic64_sub_return_release) 9878c2ecf20Sopenharmony_cistatic __always_inline s64 9888c2ecf20Sopenharmony_ciatomic64_sub_return_release(s64 i, atomic64_t *v) 9898c2ecf20Sopenharmony_ci{ 9908c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 9918c2ecf20Sopenharmony_ci return arch_atomic64_sub_return_release(i, v); 9928c2ecf20Sopenharmony_ci} 9938c2ecf20Sopenharmony_ci#define atomic64_sub_return_release atomic64_sub_return_release 9948c2ecf20Sopenharmony_ci#endif 9958c2ecf20Sopenharmony_ci 9968c2ecf20Sopenharmony_ci#if defined(arch_atomic64_sub_return_relaxed) 9978c2ecf20Sopenharmony_cistatic __always_inline s64 9988c2ecf20Sopenharmony_ciatomic64_sub_return_relaxed(s64 i, atomic64_t *v) 9998c2ecf20Sopenharmony_ci{ 10008c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10018c2ecf20Sopenharmony_ci return arch_atomic64_sub_return_relaxed(i, v); 10028c2ecf20Sopenharmony_ci} 10038c2ecf20Sopenharmony_ci#define atomic64_sub_return_relaxed atomic64_sub_return_relaxed 10048c2ecf20Sopenharmony_ci#endif 10058c2ecf20Sopenharmony_ci 10068c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_fetch_sub_relaxed) || defined(arch_atomic64_fetch_sub) 10078c2ecf20Sopenharmony_cistatic __always_inline s64 10088c2ecf20Sopenharmony_ciatomic64_fetch_sub(s64 i, atomic64_t *v) 10098c2ecf20Sopenharmony_ci{ 10108c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10118c2ecf20Sopenharmony_ci return arch_atomic64_fetch_sub(i, v); 10128c2ecf20Sopenharmony_ci} 10138c2ecf20Sopenharmony_ci#define atomic64_fetch_sub atomic64_fetch_sub 10148c2ecf20Sopenharmony_ci#endif 10158c2ecf20Sopenharmony_ci 10168c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_sub_acquire) 10178c2ecf20Sopenharmony_cistatic __always_inline s64 10188c2ecf20Sopenharmony_ciatomic64_fetch_sub_acquire(s64 i, atomic64_t *v) 10198c2ecf20Sopenharmony_ci{ 10208c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10218c2ecf20Sopenharmony_ci return arch_atomic64_fetch_sub_acquire(i, v); 10228c2ecf20Sopenharmony_ci} 10238c2ecf20Sopenharmony_ci#define atomic64_fetch_sub_acquire atomic64_fetch_sub_acquire 10248c2ecf20Sopenharmony_ci#endif 10258c2ecf20Sopenharmony_ci 10268c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_sub_release) 10278c2ecf20Sopenharmony_cistatic __always_inline s64 10288c2ecf20Sopenharmony_ciatomic64_fetch_sub_release(s64 i, atomic64_t *v) 10298c2ecf20Sopenharmony_ci{ 10308c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10318c2ecf20Sopenharmony_ci return arch_atomic64_fetch_sub_release(i, v); 10328c2ecf20Sopenharmony_ci} 10338c2ecf20Sopenharmony_ci#define atomic64_fetch_sub_release atomic64_fetch_sub_release 10348c2ecf20Sopenharmony_ci#endif 10358c2ecf20Sopenharmony_ci 10368c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_sub_relaxed) 10378c2ecf20Sopenharmony_cistatic __always_inline s64 10388c2ecf20Sopenharmony_ciatomic64_fetch_sub_relaxed(s64 i, atomic64_t *v) 10398c2ecf20Sopenharmony_ci{ 10408c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10418c2ecf20Sopenharmony_ci return arch_atomic64_fetch_sub_relaxed(i, v); 10428c2ecf20Sopenharmony_ci} 10438c2ecf20Sopenharmony_ci#define atomic64_fetch_sub_relaxed atomic64_fetch_sub_relaxed 10448c2ecf20Sopenharmony_ci#endif 10458c2ecf20Sopenharmony_ci 10468c2ecf20Sopenharmony_ci#if defined(arch_atomic64_inc) 10478c2ecf20Sopenharmony_cistatic __always_inline void 10488c2ecf20Sopenharmony_ciatomic64_inc(atomic64_t *v) 10498c2ecf20Sopenharmony_ci{ 10508c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10518c2ecf20Sopenharmony_ci arch_atomic64_inc(v); 10528c2ecf20Sopenharmony_ci} 10538c2ecf20Sopenharmony_ci#define atomic64_inc atomic64_inc 10548c2ecf20Sopenharmony_ci#endif 10558c2ecf20Sopenharmony_ci 10568c2ecf20Sopenharmony_ci#if defined(arch_atomic64_inc_return) 10578c2ecf20Sopenharmony_cistatic __always_inline s64 10588c2ecf20Sopenharmony_ciatomic64_inc_return(atomic64_t *v) 10598c2ecf20Sopenharmony_ci{ 10608c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10618c2ecf20Sopenharmony_ci return arch_atomic64_inc_return(v); 10628c2ecf20Sopenharmony_ci} 10638c2ecf20Sopenharmony_ci#define atomic64_inc_return atomic64_inc_return 10648c2ecf20Sopenharmony_ci#endif 10658c2ecf20Sopenharmony_ci 10668c2ecf20Sopenharmony_ci#if defined(arch_atomic64_inc_return_acquire) 10678c2ecf20Sopenharmony_cistatic __always_inline s64 10688c2ecf20Sopenharmony_ciatomic64_inc_return_acquire(atomic64_t *v) 10698c2ecf20Sopenharmony_ci{ 10708c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10718c2ecf20Sopenharmony_ci return arch_atomic64_inc_return_acquire(v); 10728c2ecf20Sopenharmony_ci} 10738c2ecf20Sopenharmony_ci#define atomic64_inc_return_acquire atomic64_inc_return_acquire 10748c2ecf20Sopenharmony_ci#endif 10758c2ecf20Sopenharmony_ci 10768c2ecf20Sopenharmony_ci#if defined(arch_atomic64_inc_return_release) 10778c2ecf20Sopenharmony_cistatic __always_inline s64 10788c2ecf20Sopenharmony_ciatomic64_inc_return_release(atomic64_t *v) 10798c2ecf20Sopenharmony_ci{ 10808c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10818c2ecf20Sopenharmony_ci return arch_atomic64_inc_return_release(v); 10828c2ecf20Sopenharmony_ci} 10838c2ecf20Sopenharmony_ci#define atomic64_inc_return_release atomic64_inc_return_release 10848c2ecf20Sopenharmony_ci#endif 10858c2ecf20Sopenharmony_ci 10868c2ecf20Sopenharmony_ci#if defined(arch_atomic64_inc_return_relaxed) 10878c2ecf20Sopenharmony_cistatic __always_inline s64 10888c2ecf20Sopenharmony_ciatomic64_inc_return_relaxed(atomic64_t *v) 10898c2ecf20Sopenharmony_ci{ 10908c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 10918c2ecf20Sopenharmony_ci return arch_atomic64_inc_return_relaxed(v); 10928c2ecf20Sopenharmony_ci} 10938c2ecf20Sopenharmony_ci#define atomic64_inc_return_relaxed atomic64_inc_return_relaxed 10948c2ecf20Sopenharmony_ci#endif 10958c2ecf20Sopenharmony_ci 10968c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_inc) 10978c2ecf20Sopenharmony_cistatic __always_inline s64 10988c2ecf20Sopenharmony_ciatomic64_fetch_inc(atomic64_t *v) 10998c2ecf20Sopenharmony_ci{ 11008c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11018c2ecf20Sopenharmony_ci return arch_atomic64_fetch_inc(v); 11028c2ecf20Sopenharmony_ci} 11038c2ecf20Sopenharmony_ci#define atomic64_fetch_inc atomic64_fetch_inc 11048c2ecf20Sopenharmony_ci#endif 11058c2ecf20Sopenharmony_ci 11068c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_inc_acquire) 11078c2ecf20Sopenharmony_cistatic __always_inline s64 11088c2ecf20Sopenharmony_ciatomic64_fetch_inc_acquire(atomic64_t *v) 11098c2ecf20Sopenharmony_ci{ 11108c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11118c2ecf20Sopenharmony_ci return arch_atomic64_fetch_inc_acquire(v); 11128c2ecf20Sopenharmony_ci} 11138c2ecf20Sopenharmony_ci#define atomic64_fetch_inc_acquire atomic64_fetch_inc_acquire 11148c2ecf20Sopenharmony_ci#endif 11158c2ecf20Sopenharmony_ci 11168c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_inc_release) 11178c2ecf20Sopenharmony_cistatic __always_inline s64 11188c2ecf20Sopenharmony_ciatomic64_fetch_inc_release(atomic64_t *v) 11198c2ecf20Sopenharmony_ci{ 11208c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11218c2ecf20Sopenharmony_ci return arch_atomic64_fetch_inc_release(v); 11228c2ecf20Sopenharmony_ci} 11238c2ecf20Sopenharmony_ci#define atomic64_fetch_inc_release atomic64_fetch_inc_release 11248c2ecf20Sopenharmony_ci#endif 11258c2ecf20Sopenharmony_ci 11268c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_inc_relaxed) 11278c2ecf20Sopenharmony_cistatic __always_inline s64 11288c2ecf20Sopenharmony_ciatomic64_fetch_inc_relaxed(atomic64_t *v) 11298c2ecf20Sopenharmony_ci{ 11308c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11318c2ecf20Sopenharmony_ci return arch_atomic64_fetch_inc_relaxed(v); 11328c2ecf20Sopenharmony_ci} 11338c2ecf20Sopenharmony_ci#define atomic64_fetch_inc_relaxed atomic64_fetch_inc_relaxed 11348c2ecf20Sopenharmony_ci#endif 11358c2ecf20Sopenharmony_ci 11368c2ecf20Sopenharmony_ci#if defined(arch_atomic64_dec) 11378c2ecf20Sopenharmony_cistatic __always_inline void 11388c2ecf20Sopenharmony_ciatomic64_dec(atomic64_t *v) 11398c2ecf20Sopenharmony_ci{ 11408c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11418c2ecf20Sopenharmony_ci arch_atomic64_dec(v); 11428c2ecf20Sopenharmony_ci} 11438c2ecf20Sopenharmony_ci#define atomic64_dec atomic64_dec 11448c2ecf20Sopenharmony_ci#endif 11458c2ecf20Sopenharmony_ci 11468c2ecf20Sopenharmony_ci#if defined(arch_atomic64_dec_return) 11478c2ecf20Sopenharmony_cistatic __always_inline s64 11488c2ecf20Sopenharmony_ciatomic64_dec_return(atomic64_t *v) 11498c2ecf20Sopenharmony_ci{ 11508c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11518c2ecf20Sopenharmony_ci return arch_atomic64_dec_return(v); 11528c2ecf20Sopenharmony_ci} 11538c2ecf20Sopenharmony_ci#define atomic64_dec_return atomic64_dec_return 11548c2ecf20Sopenharmony_ci#endif 11558c2ecf20Sopenharmony_ci 11568c2ecf20Sopenharmony_ci#if defined(arch_atomic64_dec_return_acquire) 11578c2ecf20Sopenharmony_cistatic __always_inline s64 11588c2ecf20Sopenharmony_ciatomic64_dec_return_acquire(atomic64_t *v) 11598c2ecf20Sopenharmony_ci{ 11608c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11618c2ecf20Sopenharmony_ci return arch_atomic64_dec_return_acquire(v); 11628c2ecf20Sopenharmony_ci} 11638c2ecf20Sopenharmony_ci#define atomic64_dec_return_acquire atomic64_dec_return_acquire 11648c2ecf20Sopenharmony_ci#endif 11658c2ecf20Sopenharmony_ci 11668c2ecf20Sopenharmony_ci#if defined(arch_atomic64_dec_return_release) 11678c2ecf20Sopenharmony_cistatic __always_inline s64 11688c2ecf20Sopenharmony_ciatomic64_dec_return_release(atomic64_t *v) 11698c2ecf20Sopenharmony_ci{ 11708c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11718c2ecf20Sopenharmony_ci return arch_atomic64_dec_return_release(v); 11728c2ecf20Sopenharmony_ci} 11738c2ecf20Sopenharmony_ci#define atomic64_dec_return_release atomic64_dec_return_release 11748c2ecf20Sopenharmony_ci#endif 11758c2ecf20Sopenharmony_ci 11768c2ecf20Sopenharmony_ci#if defined(arch_atomic64_dec_return_relaxed) 11778c2ecf20Sopenharmony_cistatic __always_inline s64 11788c2ecf20Sopenharmony_ciatomic64_dec_return_relaxed(atomic64_t *v) 11798c2ecf20Sopenharmony_ci{ 11808c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11818c2ecf20Sopenharmony_ci return arch_atomic64_dec_return_relaxed(v); 11828c2ecf20Sopenharmony_ci} 11838c2ecf20Sopenharmony_ci#define atomic64_dec_return_relaxed atomic64_dec_return_relaxed 11848c2ecf20Sopenharmony_ci#endif 11858c2ecf20Sopenharmony_ci 11868c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_dec) 11878c2ecf20Sopenharmony_cistatic __always_inline s64 11888c2ecf20Sopenharmony_ciatomic64_fetch_dec(atomic64_t *v) 11898c2ecf20Sopenharmony_ci{ 11908c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 11918c2ecf20Sopenharmony_ci return arch_atomic64_fetch_dec(v); 11928c2ecf20Sopenharmony_ci} 11938c2ecf20Sopenharmony_ci#define atomic64_fetch_dec atomic64_fetch_dec 11948c2ecf20Sopenharmony_ci#endif 11958c2ecf20Sopenharmony_ci 11968c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_dec_acquire) 11978c2ecf20Sopenharmony_cistatic __always_inline s64 11988c2ecf20Sopenharmony_ciatomic64_fetch_dec_acquire(atomic64_t *v) 11998c2ecf20Sopenharmony_ci{ 12008c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12018c2ecf20Sopenharmony_ci return arch_atomic64_fetch_dec_acquire(v); 12028c2ecf20Sopenharmony_ci} 12038c2ecf20Sopenharmony_ci#define atomic64_fetch_dec_acquire atomic64_fetch_dec_acquire 12048c2ecf20Sopenharmony_ci#endif 12058c2ecf20Sopenharmony_ci 12068c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_dec_release) 12078c2ecf20Sopenharmony_cistatic __always_inline s64 12088c2ecf20Sopenharmony_ciatomic64_fetch_dec_release(atomic64_t *v) 12098c2ecf20Sopenharmony_ci{ 12108c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12118c2ecf20Sopenharmony_ci return arch_atomic64_fetch_dec_release(v); 12128c2ecf20Sopenharmony_ci} 12138c2ecf20Sopenharmony_ci#define atomic64_fetch_dec_release atomic64_fetch_dec_release 12148c2ecf20Sopenharmony_ci#endif 12158c2ecf20Sopenharmony_ci 12168c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_dec_relaxed) 12178c2ecf20Sopenharmony_cistatic __always_inline s64 12188c2ecf20Sopenharmony_ciatomic64_fetch_dec_relaxed(atomic64_t *v) 12198c2ecf20Sopenharmony_ci{ 12208c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12218c2ecf20Sopenharmony_ci return arch_atomic64_fetch_dec_relaxed(v); 12228c2ecf20Sopenharmony_ci} 12238c2ecf20Sopenharmony_ci#define atomic64_fetch_dec_relaxed atomic64_fetch_dec_relaxed 12248c2ecf20Sopenharmony_ci#endif 12258c2ecf20Sopenharmony_ci 12268c2ecf20Sopenharmony_cistatic __always_inline void 12278c2ecf20Sopenharmony_ciatomic64_and(s64 i, atomic64_t *v) 12288c2ecf20Sopenharmony_ci{ 12298c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12308c2ecf20Sopenharmony_ci arch_atomic64_and(i, v); 12318c2ecf20Sopenharmony_ci} 12328c2ecf20Sopenharmony_ci#define atomic64_and atomic64_and 12338c2ecf20Sopenharmony_ci 12348c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_fetch_and_relaxed) || defined(arch_atomic64_fetch_and) 12358c2ecf20Sopenharmony_cistatic __always_inline s64 12368c2ecf20Sopenharmony_ciatomic64_fetch_and(s64 i, atomic64_t *v) 12378c2ecf20Sopenharmony_ci{ 12388c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12398c2ecf20Sopenharmony_ci return arch_atomic64_fetch_and(i, v); 12408c2ecf20Sopenharmony_ci} 12418c2ecf20Sopenharmony_ci#define atomic64_fetch_and atomic64_fetch_and 12428c2ecf20Sopenharmony_ci#endif 12438c2ecf20Sopenharmony_ci 12448c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_and_acquire) 12458c2ecf20Sopenharmony_cistatic __always_inline s64 12468c2ecf20Sopenharmony_ciatomic64_fetch_and_acquire(s64 i, atomic64_t *v) 12478c2ecf20Sopenharmony_ci{ 12488c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12498c2ecf20Sopenharmony_ci return arch_atomic64_fetch_and_acquire(i, v); 12508c2ecf20Sopenharmony_ci} 12518c2ecf20Sopenharmony_ci#define atomic64_fetch_and_acquire atomic64_fetch_and_acquire 12528c2ecf20Sopenharmony_ci#endif 12538c2ecf20Sopenharmony_ci 12548c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_and_release) 12558c2ecf20Sopenharmony_cistatic __always_inline s64 12568c2ecf20Sopenharmony_ciatomic64_fetch_and_release(s64 i, atomic64_t *v) 12578c2ecf20Sopenharmony_ci{ 12588c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12598c2ecf20Sopenharmony_ci return arch_atomic64_fetch_and_release(i, v); 12608c2ecf20Sopenharmony_ci} 12618c2ecf20Sopenharmony_ci#define atomic64_fetch_and_release atomic64_fetch_and_release 12628c2ecf20Sopenharmony_ci#endif 12638c2ecf20Sopenharmony_ci 12648c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_and_relaxed) 12658c2ecf20Sopenharmony_cistatic __always_inline s64 12668c2ecf20Sopenharmony_ciatomic64_fetch_and_relaxed(s64 i, atomic64_t *v) 12678c2ecf20Sopenharmony_ci{ 12688c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12698c2ecf20Sopenharmony_ci return arch_atomic64_fetch_and_relaxed(i, v); 12708c2ecf20Sopenharmony_ci} 12718c2ecf20Sopenharmony_ci#define atomic64_fetch_and_relaxed atomic64_fetch_and_relaxed 12728c2ecf20Sopenharmony_ci#endif 12738c2ecf20Sopenharmony_ci 12748c2ecf20Sopenharmony_ci#if defined(arch_atomic64_andnot) 12758c2ecf20Sopenharmony_cistatic __always_inline void 12768c2ecf20Sopenharmony_ciatomic64_andnot(s64 i, atomic64_t *v) 12778c2ecf20Sopenharmony_ci{ 12788c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12798c2ecf20Sopenharmony_ci arch_atomic64_andnot(i, v); 12808c2ecf20Sopenharmony_ci} 12818c2ecf20Sopenharmony_ci#define atomic64_andnot atomic64_andnot 12828c2ecf20Sopenharmony_ci#endif 12838c2ecf20Sopenharmony_ci 12848c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_andnot) 12858c2ecf20Sopenharmony_cistatic __always_inline s64 12868c2ecf20Sopenharmony_ciatomic64_fetch_andnot(s64 i, atomic64_t *v) 12878c2ecf20Sopenharmony_ci{ 12888c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12898c2ecf20Sopenharmony_ci return arch_atomic64_fetch_andnot(i, v); 12908c2ecf20Sopenharmony_ci} 12918c2ecf20Sopenharmony_ci#define atomic64_fetch_andnot atomic64_fetch_andnot 12928c2ecf20Sopenharmony_ci#endif 12938c2ecf20Sopenharmony_ci 12948c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_andnot_acquire) 12958c2ecf20Sopenharmony_cistatic __always_inline s64 12968c2ecf20Sopenharmony_ciatomic64_fetch_andnot_acquire(s64 i, atomic64_t *v) 12978c2ecf20Sopenharmony_ci{ 12988c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 12998c2ecf20Sopenharmony_ci return arch_atomic64_fetch_andnot_acquire(i, v); 13008c2ecf20Sopenharmony_ci} 13018c2ecf20Sopenharmony_ci#define atomic64_fetch_andnot_acquire atomic64_fetch_andnot_acquire 13028c2ecf20Sopenharmony_ci#endif 13038c2ecf20Sopenharmony_ci 13048c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_andnot_release) 13058c2ecf20Sopenharmony_cistatic __always_inline s64 13068c2ecf20Sopenharmony_ciatomic64_fetch_andnot_release(s64 i, atomic64_t *v) 13078c2ecf20Sopenharmony_ci{ 13088c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13098c2ecf20Sopenharmony_ci return arch_atomic64_fetch_andnot_release(i, v); 13108c2ecf20Sopenharmony_ci} 13118c2ecf20Sopenharmony_ci#define atomic64_fetch_andnot_release atomic64_fetch_andnot_release 13128c2ecf20Sopenharmony_ci#endif 13138c2ecf20Sopenharmony_ci 13148c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_andnot_relaxed) 13158c2ecf20Sopenharmony_cistatic __always_inline s64 13168c2ecf20Sopenharmony_ciatomic64_fetch_andnot_relaxed(s64 i, atomic64_t *v) 13178c2ecf20Sopenharmony_ci{ 13188c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13198c2ecf20Sopenharmony_ci return arch_atomic64_fetch_andnot_relaxed(i, v); 13208c2ecf20Sopenharmony_ci} 13218c2ecf20Sopenharmony_ci#define atomic64_fetch_andnot_relaxed atomic64_fetch_andnot_relaxed 13228c2ecf20Sopenharmony_ci#endif 13238c2ecf20Sopenharmony_ci 13248c2ecf20Sopenharmony_cistatic __always_inline void 13258c2ecf20Sopenharmony_ciatomic64_or(s64 i, atomic64_t *v) 13268c2ecf20Sopenharmony_ci{ 13278c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13288c2ecf20Sopenharmony_ci arch_atomic64_or(i, v); 13298c2ecf20Sopenharmony_ci} 13308c2ecf20Sopenharmony_ci#define atomic64_or atomic64_or 13318c2ecf20Sopenharmony_ci 13328c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_fetch_or_relaxed) || defined(arch_atomic64_fetch_or) 13338c2ecf20Sopenharmony_cistatic __always_inline s64 13348c2ecf20Sopenharmony_ciatomic64_fetch_or(s64 i, atomic64_t *v) 13358c2ecf20Sopenharmony_ci{ 13368c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13378c2ecf20Sopenharmony_ci return arch_atomic64_fetch_or(i, v); 13388c2ecf20Sopenharmony_ci} 13398c2ecf20Sopenharmony_ci#define atomic64_fetch_or atomic64_fetch_or 13408c2ecf20Sopenharmony_ci#endif 13418c2ecf20Sopenharmony_ci 13428c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_or_acquire) 13438c2ecf20Sopenharmony_cistatic __always_inline s64 13448c2ecf20Sopenharmony_ciatomic64_fetch_or_acquire(s64 i, atomic64_t *v) 13458c2ecf20Sopenharmony_ci{ 13468c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13478c2ecf20Sopenharmony_ci return arch_atomic64_fetch_or_acquire(i, v); 13488c2ecf20Sopenharmony_ci} 13498c2ecf20Sopenharmony_ci#define atomic64_fetch_or_acquire atomic64_fetch_or_acquire 13508c2ecf20Sopenharmony_ci#endif 13518c2ecf20Sopenharmony_ci 13528c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_or_release) 13538c2ecf20Sopenharmony_cistatic __always_inline s64 13548c2ecf20Sopenharmony_ciatomic64_fetch_or_release(s64 i, atomic64_t *v) 13558c2ecf20Sopenharmony_ci{ 13568c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13578c2ecf20Sopenharmony_ci return arch_atomic64_fetch_or_release(i, v); 13588c2ecf20Sopenharmony_ci} 13598c2ecf20Sopenharmony_ci#define atomic64_fetch_or_release atomic64_fetch_or_release 13608c2ecf20Sopenharmony_ci#endif 13618c2ecf20Sopenharmony_ci 13628c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_or_relaxed) 13638c2ecf20Sopenharmony_cistatic __always_inline s64 13648c2ecf20Sopenharmony_ciatomic64_fetch_or_relaxed(s64 i, atomic64_t *v) 13658c2ecf20Sopenharmony_ci{ 13668c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13678c2ecf20Sopenharmony_ci return arch_atomic64_fetch_or_relaxed(i, v); 13688c2ecf20Sopenharmony_ci} 13698c2ecf20Sopenharmony_ci#define atomic64_fetch_or_relaxed atomic64_fetch_or_relaxed 13708c2ecf20Sopenharmony_ci#endif 13718c2ecf20Sopenharmony_ci 13728c2ecf20Sopenharmony_cistatic __always_inline void 13738c2ecf20Sopenharmony_ciatomic64_xor(s64 i, atomic64_t *v) 13748c2ecf20Sopenharmony_ci{ 13758c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13768c2ecf20Sopenharmony_ci arch_atomic64_xor(i, v); 13778c2ecf20Sopenharmony_ci} 13788c2ecf20Sopenharmony_ci#define atomic64_xor atomic64_xor 13798c2ecf20Sopenharmony_ci 13808c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_fetch_xor_relaxed) || defined(arch_atomic64_fetch_xor) 13818c2ecf20Sopenharmony_cistatic __always_inline s64 13828c2ecf20Sopenharmony_ciatomic64_fetch_xor(s64 i, atomic64_t *v) 13838c2ecf20Sopenharmony_ci{ 13848c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13858c2ecf20Sopenharmony_ci return arch_atomic64_fetch_xor(i, v); 13868c2ecf20Sopenharmony_ci} 13878c2ecf20Sopenharmony_ci#define atomic64_fetch_xor atomic64_fetch_xor 13888c2ecf20Sopenharmony_ci#endif 13898c2ecf20Sopenharmony_ci 13908c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_xor_acquire) 13918c2ecf20Sopenharmony_cistatic __always_inline s64 13928c2ecf20Sopenharmony_ciatomic64_fetch_xor_acquire(s64 i, atomic64_t *v) 13938c2ecf20Sopenharmony_ci{ 13948c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 13958c2ecf20Sopenharmony_ci return arch_atomic64_fetch_xor_acquire(i, v); 13968c2ecf20Sopenharmony_ci} 13978c2ecf20Sopenharmony_ci#define atomic64_fetch_xor_acquire atomic64_fetch_xor_acquire 13988c2ecf20Sopenharmony_ci#endif 13998c2ecf20Sopenharmony_ci 14008c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_xor_release) 14018c2ecf20Sopenharmony_cistatic __always_inline s64 14028c2ecf20Sopenharmony_ciatomic64_fetch_xor_release(s64 i, atomic64_t *v) 14038c2ecf20Sopenharmony_ci{ 14048c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14058c2ecf20Sopenharmony_ci return arch_atomic64_fetch_xor_release(i, v); 14068c2ecf20Sopenharmony_ci} 14078c2ecf20Sopenharmony_ci#define atomic64_fetch_xor_release atomic64_fetch_xor_release 14088c2ecf20Sopenharmony_ci#endif 14098c2ecf20Sopenharmony_ci 14108c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_xor_relaxed) 14118c2ecf20Sopenharmony_cistatic __always_inline s64 14128c2ecf20Sopenharmony_ciatomic64_fetch_xor_relaxed(s64 i, atomic64_t *v) 14138c2ecf20Sopenharmony_ci{ 14148c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14158c2ecf20Sopenharmony_ci return arch_atomic64_fetch_xor_relaxed(i, v); 14168c2ecf20Sopenharmony_ci} 14178c2ecf20Sopenharmony_ci#define atomic64_fetch_xor_relaxed atomic64_fetch_xor_relaxed 14188c2ecf20Sopenharmony_ci#endif 14198c2ecf20Sopenharmony_ci 14208c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_xchg_relaxed) || defined(arch_atomic64_xchg) 14218c2ecf20Sopenharmony_cistatic __always_inline s64 14228c2ecf20Sopenharmony_ciatomic64_xchg(atomic64_t *v, s64 i) 14238c2ecf20Sopenharmony_ci{ 14248c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14258c2ecf20Sopenharmony_ci return arch_atomic64_xchg(v, i); 14268c2ecf20Sopenharmony_ci} 14278c2ecf20Sopenharmony_ci#define atomic64_xchg atomic64_xchg 14288c2ecf20Sopenharmony_ci#endif 14298c2ecf20Sopenharmony_ci 14308c2ecf20Sopenharmony_ci#if defined(arch_atomic64_xchg_acquire) 14318c2ecf20Sopenharmony_cistatic __always_inline s64 14328c2ecf20Sopenharmony_ciatomic64_xchg_acquire(atomic64_t *v, s64 i) 14338c2ecf20Sopenharmony_ci{ 14348c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14358c2ecf20Sopenharmony_ci return arch_atomic64_xchg_acquire(v, i); 14368c2ecf20Sopenharmony_ci} 14378c2ecf20Sopenharmony_ci#define atomic64_xchg_acquire atomic64_xchg_acquire 14388c2ecf20Sopenharmony_ci#endif 14398c2ecf20Sopenharmony_ci 14408c2ecf20Sopenharmony_ci#if defined(arch_atomic64_xchg_release) 14418c2ecf20Sopenharmony_cistatic __always_inline s64 14428c2ecf20Sopenharmony_ciatomic64_xchg_release(atomic64_t *v, s64 i) 14438c2ecf20Sopenharmony_ci{ 14448c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14458c2ecf20Sopenharmony_ci return arch_atomic64_xchg_release(v, i); 14468c2ecf20Sopenharmony_ci} 14478c2ecf20Sopenharmony_ci#define atomic64_xchg_release atomic64_xchg_release 14488c2ecf20Sopenharmony_ci#endif 14498c2ecf20Sopenharmony_ci 14508c2ecf20Sopenharmony_ci#if defined(arch_atomic64_xchg_relaxed) 14518c2ecf20Sopenharmony_cistatic __always_inline s64 14528c2ecf20Sopenharmony_ciatomic64_xchg_relaxed(atomic64_t *v, s64 i) 14538c2ecf20Sopenharmony_ci{ 14548c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14558c2ecf20Sopenharmony_ci return arch_atomic64_xchg_relaxed(v, i); 14568c2ecf20Sopenharmony_ci} 14578c2ecf20Sopenharmony_ci#define atomic64_xchg_relaxed atomic64_xchg_relaxed 14588c2ecf20Sopenharmony_ci#endif 14598c2ecf20Sopenharmony_ci 14608c2ecf20Sopenharmony_ci#if !defined(arch_atomic64_cmpxchg_relaxed) || defined(arch_atomic64_cmpxchg) 14618c2ecf20Sopenharmony_cistatic __always_inline s64 14628c2ecf20Sopenharmony_ciatomic64_cmpxchg(atomic64_t *v, s64 old, s64 new) 14638c2ecf20Sopenharmony_ci{ 14648c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14658c2ecf20Sopenharmony_ci return arch_atomic64_cmpxchg(v, old, new); 14668c2ecf20Sopenharmony_ci} 14678c2ecf20Sopenharmony_ci#define atomic64_cmpxchg atomic64_cmpxchg 14688c2ecf20Sopenharmony_ci#endif 14698c2ecf20Sopenharmony_ci 14708c2ecf20Sopenharmony_ci#if defined(arch_atomic64_cmpxchg_acquire) 14718c2ecf20Sopenharmony_cistatic __always_inline s64 14728c2ecf20Sopenharmony_ciatomic64_cmpxchg_acquire(atomic64_t *v, s64 old, s64 new) 14738c2ecf20Sopenharmony_ci{ 14748c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14758c2ecf20Sopenharmony_ci return arch_atomic64_cmpxchg_acquire(v, old, new); 14768c2ecf20Sopenharmony_ci} 14778c2ecf20Sopenharmony_ci#define atomic64_cmpxchg_acquire atomic64_cmpxchg_acquire 14788c2ecf20Sopenharmony_ci#endif 14798c2ecf20Sopenharmony_ci 14808c2ecf20Sopenharmony_ci#if defined(arch_atomic64_cmpxchg_release) 14818c2ecf20Sopenharmony_cistatic __always_inline s64 14828c2ecf20Sopenharmony_ciatomic64_cmpxchg_release(atomic64_t *v, s64 old, s64 new) 14838c2ecf20Sopenharmony_ci{ 14848c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14858c2ecf20Sopenharmony_ci return arch_atomic64_cmpxchg_release(v, old, new); 14868c2ecf20Sopenharmony_ci} 14878c2ecf20Sopenharmony_ci#define atomic64_cmpxchg_release atomic64_cmpxchg_release 14888c2ecf20Sopenharmony_ci#endif 14898c2ecf20Sopenharmony_ci 14908c2ecf20Sopenharmony_ci#if defined(arch_atomic64_cmpxchg_relaxed) 14918c2ecf20Sopenharmony_cistatic __always_inline s64 14928c2ecf20Sopenharmony_ciatomic64_cmpxchg_relaxed(atomic64_t *v, s64 old, s64 new) 14938c2ecf20Sopenharmony_ci{ 14948c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 14958c2ecf20Sopenharmony_ci return arch_atomic64_cmpxchg_relaxed(v, old, new); 14968c2ecf20Sopenharmony_ci} 14978c2ecf20Sopenharmony_ci#define atomic64_cmpxchg_relaxed atomic64_cmpxchg_relaxed 14988c2ecf20Sopenharmony_ci#endif 14998c2ecf20Sopenharmony_ci 15008c2ecf20Sopenharmony_ci#if defined(arch_atomic64_try_cmpxchg) 15018c2ecf20Sopenharmony_cistatic __always_inline bool 15028c2ecf20Sopenharmony_ciatomic64_try_cmpxchg(atomic64_t *v, s64 *old, s64 new) 15038c2ecf20Sopenharmony_ci{ 15048c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15058c2ecf20Sopenharmony_ci instrument_atomic_read_write(old, sizeof(*old)); 15068c2ecf20Sopenharmony_ci return arch_atomic64_try_cmpxchg(v, old, new); 15078c2ecf20Sopenharmony_ci} 15088c2ecf20Sopenharmony_ci#define atomic64_try_cmpxchg atomic64_try_cmpxchg 15098c2ecf20Sopenharmony_ci#endif 15108c2ecf20Sopenharmony_ci 15118c2ecf20Sopenharmony_ci#if defined(arch_atomic64_try_cmpxchg_acquire) 15128c2ecf20Sopenharmony_cistatic __always_inline bool 15138c2ecf20Sopenharmony_ciatomic64_try_cmpxchg_acquire(atomic64_t *v, s64 *old, s64 new) 15148c2ecf20Sopenharmony_ci{ 15158c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15168c2ecf20Sopenharmony_ci instrument_atomic_read_write(old, sizeof(*old)); 15178c2ecf20Sopenharmony_ci return arch_atomic64_try_cmpxchg_acquire(v, old, new); 15188c2ecf20Sopenharmony_ci} 15198c2ecf20Sopenharmony_ci#define atomic64_try_cmpxchg_acquire atomic64_try_cmpxchg_acquire 15208c2ecf20Sopenharmony_ci#endif 15218c2ecf20Sopenharmony_ci 15228c2ecf20Sopenharmony_ci#if defined(arch_atomic64_try_cmpxchg_release) 15238c2ecf20Sopenharmony_cistatic __always_inline bool 15248c2ecf20Sopenharmony_ciatomic64_try_cmpxchg_release(atomic64_t *v, s64 *old, s64 new) 15258c2ecf20Sopenharmony_ci{ 15268c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15278c2ecf20Sopenharmony_ci instrument_atomic_read_write(old, sizeof(*old)); 15288c2ecf20Sopenharmony_ci return arch_atomic64_try_cmpxchg_release(v, old, new); 15298c2ecf20Sopenharmony_ci} 15308c2ecf20Sopenharmony_ci#define atomic64_try_cmpxchg_release atomic64_try_cmpxchg_release 15318c2ecf20Sopenharmony_ci#endif 15328c2ecf20Sopenharmony_ci 15338c2ecf20Sopenharmony_ci#if defined(arch_atomic64_try_cmpxchg_relaxed) 15348c2ecf20Sopenharmony_cistatic __always_inline bool 15358c2ecf20Sopenharmony_ciatomic64_try_cmpxchg_relaxed(atomic64_t *v, s64 *old, s64 new) 15368c2ecf20Sopenharmony_ci{ 15378c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15388c2ecf20Sopenharmony_ci instrument_atomic_read_write(old, sizeof(*old)); 15398c2ecf20Sopenharmony_ci return arch_atomic64_try_cmpxchg_relaxed(v, old, new); 15408c2ecf20Sopenharmony_ci} 15418c2ecf20Sopenharmony_ci#define atomic64_try_cmpxchg_relaxed atomic64_try_cmpxchg_relaxed 15428c2ecf20Sopenharmony_ci#endif 15438c2ecf20Sopenharmony_ci 15448c2ecf20Sopenharmony_ci#if defined(arch_atomic64_sub_and_test) 15458c2ecf20Sopenharmony_cistatic __always_inline bool 15468c2ecf20Sopenharmony_ciatomic64_sub_and_test(s64 i, atomic64_t *v) 15478c2ecf20Sopenharmony_ci{ 15488c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15498c2ecf20Sopenharmony_ci return arch_atomic64_sub_and_test(i, v); 15508c2ecf20Sopenharmony_ci} 15518c2ecf20Sopenharmony_ci#define atomic64_sub_and_test atomic64_sub_and_test 15528c2ecf20Sopenharmony_ci#endif 15538c2ecf20Sopenharmony_ci 15548c2ecf20Sopenharmony_ci#if defined(arch_atomic64_dec_and_test) 15558c2ecf20Sopenharmony_cistatic __always_inline bool 15568c2ecf20Sopenharmony_ciatomic64_dec_and_test(atomic64_t *v) 15578c2ecf20Sopenharmony_ci{ 15588c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15598c2ecf20Sopenharmony_ci return arch_atomic64_dec_and_test(v); 15608c2ecf20Sopenharmony_ci} 15618c2ecf20Sopenharmony_ci#define atomic64_dec_and_test atomic64_dec_and_test 15628c2ecf20Sopenharmony_ci#endif 15638c2ecf20Sopenharmony_ci 15648c2ecf20Sopenharmony_ci#if defined(arch_atomic64_inc_and_test) 15658c2ecf20Sopenharmony_cistatic __always_inline bool 15668c2ecf20Sopenharmony_ciatomic64_inc_and_test(atomic64_t *v) 15678c2ecf20Sopenharmony_ci{ 15688c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15698c2ecf20Sopenharmony_ci return arch_atomic64_inc_and_test(v); 15708c2ecf20Sopenharmony_ci} 15718c2ecf20Sopenharmony_ci#define atomic64_inc_and_test atomic64_inc_and_test 15728c2ecf20Sopenharmony_ci#endif 15738c2ecf20Sopenharmony_ci 15748c2ecf20Sopenharmony_ci#if defined(arch_atomic64_add_negative) 15758c2ecf20Sopenharmony_cistatic __always_inline bool 15768c2ecf20Sopenharmony_ciatomic64_add_negative(s64 i, atomic64_t *v) 15778c2ecf20Sopenharmony_ci{ 15788c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15798c2ecf20Sopenharmony_ci return arch_atomic64_add_negative(i, v); 15808c2ecf20Sopenharmony_ci} 15818c2ecf20Sopenharmony_ci#define atomic64_add_negative atomic64_add_negative 15828c2ecf20Sopenharmony_ci#endif 15838c2ecf20Sopenharmony_ci 15848c2ecf20Sopenharmony_ci#if defined(arch_atomic64_fetch_add_unless) 15858c2ecf20Sopenharmony_cistatic __always_inline s64 15868c2ecf20Sopenharmony_ciatomic64_fetch_add_unless(atomic64_t *v, s64 a, s64 u) 15878c2ecf20Sopenharmony_ci{ 15888c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15898c2ecf20Sopenharmony_ci return arch_atomic64_fetch_add_unless(v, a, u); 15908c2ecf20Sopenharmony_ci} 15918c2ecf20Sopenharmony_ci#define atomic64_fetch_add_unless atomic64_fetch_add_unless 15928c2ecf20Sopenharmony_ci#endif 15938c2ecf20Sopenharmony_ci 15948c2ecf20Sopenharmony_ci#if defined(arch_atomic64_add_unless) 15958c2ecf20Sopenharmony_cistatic __always_inline bool 15968c2ecf20Sopenharmony_ciatomic64_add_unless(atomic64_t *v, s64 a, s64 u) 15978c2ecf20Sopenharmony_ci{ 15988c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 15998c2ecf20Sopenharmony_ci return arch_atomic64_add_unless(v, a, u); 16008c2ecf20Sopenharmony_ci} 16018c2ecf20Sopenharmony_ci#define atomic64_add_unless atomic64_add_unless 16028c2ecf20Sopenharmony_ci#endif 16038c2ecf20Sopenharmony_ci 16048c2ecf20Sopenharmony_ci#if defined(arch_atomic64_inc_not_zero) 16058c2ecf20Sopenharmony_cistatic __always_inline bool 16068c2ecf20Sopenharmony_ciatomic64_inc_not_zero(atomic64_t *v) 16078c2ecf20Sopenharmony_ci{ 16088c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 16098c2ecf20Sopenharmony_ci return arch_atomic64_inc_not_zero(v); 16108c2ecf20Sopenharmony_ci} 16118c2ecf20Sopenharmony_ci#define atomic64_inc_not_zero atomic64_inc_not_zero 16128c2ecf20Sopenharmony_ci#endif 16138c2ecf20Sopenharmony_ci 16148c2ecf20Sopenharmony_ci#if defined(arch_atomic64_inc_unless_negative) 16158c2ecf20Sopenharmony_cistatic __always_inline bool 16168c2ecf20Sopenharmony_ciatomic64_inc_unless_negative(atomic64_t *v) 16178c2ecf20Sopenharmony_ci{ 16188c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 16198c2ecf20Sopenharmony_ci return arch_atomic64_inc_unless_negative(v); 16208c2ecf20Sopenharmony_ci} 16218c2ecf20Sopenharmony_ci#define atomic64_inc_unless_negative atomic64_inc_unless_negative 16228c2ecf20Sopenharmony_ci#endif 16238c2ecf20Sopenharmony_ci 16248c2ecf20Sopenharmony_ci#if defined(arch_atomic64_dec_unless_positive) 16258c2ecf20Sopenharmony_cistatic __always_inline bool 16268c2ecf20Sopenharmony_ciatomic64_dec_unless_positive(atomic64_t *v) 16278c2ecf20Sopenharmony_ci{ 16288c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 16298c2ecf20Sopenharmony_ci return arch_atomic64_dec_unless_positive(v); 16308c2ecf20Sopenharmony_ci} 16318c2ecf20Sopenharmony_ci#define atomic64_dec_unless_positive atomic64_dec_unless_positive 16328c2ecf20Sopenharmony_ci#endif 16338c2ecf20Sopenharmony_ci 16348c2ecf20Sopenharmony_ci#if defined(arch_atomic64_dec_if_positive) 16358c2ecf20Sopenharmony_cistatic __always_inline s64 16368c2ecf20Sopenharmony_ciatomic64_dec_if_positive(atomic64_t *v) 16378c2ecf20Sopenharmony_ci{ 16388c2ecf20Sopenharmony_ci instrument_atomic_read_write(v, sizeof(*v)); 16398c2ecf20Sopenharmony_ci return arch_atomic64_dec_if_positive(v); 16408c2ecf20Sopenharmony_ci} 16418c2ecf20Sopenharmony_ci#define atomic64_dec_if_positive atomic64_dec_if_positive 16428c2ecf20Sopenharmony_ci#endif 16438c2ecf20Sopenharmony_ci 16448c2ecf20Sopenharmony_ci#if !defined(arch_xchg_relaxed) || defined(arch_xchg) 16458c2ecf20Sopenharmony_ci#define xchg(ptr, ...) \ 16468c2ecf20Sopenharmony_ci({ \ 16478c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 16488c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 16498c2ecf20Sopenharmony_ci arch_xchg(__ai_ptr, __VA_ARGS__); \ 16508c2ecf20Sopenharmony_ci}) 16518c2ecf20Sopenharmony_ci#endif 16528c2ecf20Sopenharmony_ci 16538c2ecf20Sopenharmony_ci#if defined(arch_xchg_acquire) 16548c2ecf20Sopenharmony_ci#define xchg_acquire(ptr, ...) \ 16558c2ecf20Sopenharmony_ci({ \ 16568c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 16578c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 16588c2ecf20Sopenharmony_ci arch_xchg_acquire(__ai_ptr, __VA_ARGS__); \ 16598c2ecf20Sopenharmony_ci}) 16608c2ecf20Sopenharmony_ci#endif 16618c2ecf20Sopenharmony_ci 16628c2ecf20Sopenharmony_ci#if defined(arch_xchg_release) 16638c2ecf20Sopenharmony_ci#define xchg_release(ptr, ...) \ 16648c2ecf20Sopenharmony_ci({ \ 16658c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 16668c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 16678c2ecf20Sopenharmony_ci arch_xchg_release(__ai_ptr, __VA_ARGS__); \ 16688c2ecf20Sopenharmony_ci}) 16698c2ecf20Sopenharmony_ci#endif 16708c2ecf20Sopenharmony_ci 16718c2ecf20Sopenharmony_ci#if defined(arch_xchg_relaxed) 16728c2ecf20Sopenharmony_ci#define xchg_relaxed(ptr, ...) \ 16738c2ecf20Sopenharmony_ci({ \ 16748c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 16758c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 16768c2ecf20Sopenharmony_ci arch_xchg_relaxed(__ai_ptr, __VA_ARGS__); \ 16778c2ecf20Sopenharmony_ci}) 16788c2ecf20Sopenharmony_ci#endif 16798c2ecf20Sopenharmony_ci 16808c2ecf20Sopenharmony_ci#if !defined(arch_cmpxchg_relaxed) || defined(arch_cmpxchg) 16818c2ecf20Sopenharmony_ci#define cmpxchg(ptr, ...) \ 16828c2ecf20Sopenharmony_ci({ \ 16838c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 16848c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 16858c2ecf20Sopenharmony_ci arch_cmpxchg(__ai_ptr, __VA_ARGS__); \ 16868c2ecf20Sopenharmony_ci}) 16878c2ecf20Sopenharmony_ci#endif 16888c2ecf20Sopenharmony_ci 16898c2ecf20Sopenharmony_ci#if defined(arch_cmpxchg_acquire) 16908c2ecf20Sopenharmony_ci#define cmpxchg_acquire(ptr, ...) \ 16918c2ecf20Sopenharmony_ci({ \ 16928c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 16938c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 16948c2ecf20Sopenharmony_ci arch_cmpxchg_acquire(__ai_ptr, __VA_ARGS__); \ 16958c2ecf20Sopenharmony_ci}) 16968c2ecf20Sopenharmony_ci#endif 16978c2ecf20Sopenharmony_ci 16988c2ecf20Sopenharmony_ci#if defined(arch_cmpxchg_release) 16998c2ecf20Sopenharmony_ci#define cmpxchg_release(ptr, ...) \ 17008c2ecf20Sopenharmony_ci({ \ 17018c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17028c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17038c2ecf20Sopenharmony_ci arch_cmpxchg_release(__ai_ptr, __VA_ARGS__); \ 17048c2ecf20Sopenharmony_ci}) 17058c2ecf20Sopenharmony_ci#endif 17068c2ecf20Sopenharmony_ci 17078c2ecf20Sopenharmony_ci#if defined(arch_cmpxchg_relaxed) 17088c2ecf20Sopenharmony_ci#define cmpxchg_relaxed(ptr, ...) \ 17098c2ecf20Sopenharmony_ci({ \ 17108c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17118c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17128c2ecf20Sopenharmony_ci arch_cmpxchg_relaxed(__ai_ptr, __VA_ARGS__); \ 17138c2ecf20Sopenharmony_ci}) 17148c2ecf20Sopenharmony_ci#endif 17158c2ecf20Sopenharmony_ci 17168c2ecf20Sopenharmony_ci#if !defined(arch_cmpxchg64_relaxed) || defined(arch_cmpxchg64) 17178c2ecf20Sopenharmony_ci#define cmpxchg64(ptr, ...) \ 17188c2ecf20Sopenharmony_ci({ \ 17198c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17208c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17218c2ecf20Sopenharmony_ci arch_cmpxchg64(__ai_ptr, __VA_ARGS__); \ 17228c2ecf20Sopenharmony_ci}) 17238c2ecf20Sopenharmony_ci#endif 17248c2ecf20Sopenharmony_ci 17258c2ecf20Sopenharmony_ci#if defined(arch_cmpxchg64_acquire) 17268c2ecf20Sopenharmony_ci#define cmpxchg64_acquire(ptr, ...) \ 17278c2ecf20Sopenharmony_ci({ \ 17288c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17298c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17308c2ecf20Sopenharmony_ci arch_cmpxchg64_acquire(__ai_ptr, __VA_ARGS__); \ 17318c2ecf20Sopenharmony_ci}) 17328c2ecf20Sopenharmony_ci#endif 17338c2ecf20Sopenharmony_ci 17348c2ecf20Sopenharmony_ci#if defined(arch_cmpxchg64_release) 17358c2ecf20Sopenharmony_ci#define cmpxchg64_release(ptr, ...) \ 17368c2ecf20Sopenharmony_ci({ \ 17378c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17388c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17398c2ecf20Sopenharmony_ci arch_cmpxchg64_release(__ai_ptr, __VA_ARGS__); \ 17408c2ecf20Sopenharmony_ci}) 17418c2ecf20Sopenharmony_ci#endif 17428c2ecf20Sopenharmony_ci 17438c2ecf20Sopenharmony_ci#if defined(arch_cmpxchg64_relaxed) 17448c2ecf20Sopenharmony_ci#define cmpxchg64_relaxed(ptr, ...) \ 17458c2ecf20Sopenharmony_ci({ \ 17468c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17478c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17488c2ecf20Sopenharmony_ci arch_cmpxchg64_relaxed(__ai_ptr, __VA_ARGS__); \ 17498c2ecf20Sopenharmony_ci}) 17508c2ecf20Sopenharmony_ci#endif 17518c2ecf20Sopenharmony_ci 17528c2ecf20Sopenharmony_ci#define cmpxchg_local(ptr, ...) \ 17538c2ecf20Sopenharmony_ci({ \ 17548c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17558c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17568c2ecf20Sopenharmony_ci arch_cmpxchg_local(__ai_ptr, __VA_ARGS__); \ 17578c2ecf20Sopenharmony_ci}) 17588c2ecf20Sopenharmony_ci 17598c2ecf20Sopenharmony_ci#define cmpxchg64_local(ptr, ...) \ 17608c2ecf20Sopenharmony_ci({ \ 17618c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17628c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17638c2ecf20Sopenharmony_ci arch_cmpxchg64_local(__ai_ptr, __VA_ARGS__); \ 17648c2ecf20Sopenharmony_ci}) 17658c2ecf20Sopenharmony_ci 17668c2ecf20Sopenharmony_ci#define sync_cmpxchg(ptr, ...) \ 17678c2ecf20Sopenharmony_ci({ \ 17688c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17698c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, sizeof(*__ai_ptr)); \ 17708c2ecf20Sopenharmony_ci arch_sync_cmpxchg(__ai_ptr, __VA_ARGS__); \ 17718c2ecf20Sopenharmony_ci}) 17728c2ecf20Sopenharmony_ci 17738c2ecf20Sopenharmony_ci#define cmpxchg_double(ptr, ...) \ 17748c2ecf20Sopenharmony_ci({ \ 17758c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17768c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \ 17778c2ecf20Sopenharmony_ci arch_cmpxchg_double(__ai_ptr, __VA_ARGS__); \ 17788c2ecf20Sopenharmony_ci}) 17798c2ecf20Sopenharmony_ci 17808c2ecf20Sopenharmony_ci 17818c2ecf20Sopenharmony_ci#define cmpxchg_double_local(ptr, ...) \ 17828c2ecf20Sopenharmony_ci({ \ 17838c2ecf20Sopenharmony_ci typeof(ptr) __ai_ptr = (ptr); \ 17848c2ecf20Sopenharmony_ci instrument_atomic_write(__ai_ptr, 2 * sizeof(*__ai_ptr)); \ 17858c2ecf20Sopenharmony_ci arch_cmpxchg_double_local(__ai_ptr, __VA_ARGS__); \ 17868c2ecf20Sopenharmony_ci}) 17878c2ecf20Sopenharmony_ci 17888c2ecf20Sopenharmony_ci#endif /* _ASM_GENERIC_ATOMIC_INSTRUMENTED_H */ 17898c2ecf20Sopenharmony_ci// 9d5e6a315fb1335d02f0ccd3655a91c3dafcc63e 1790