xref: /freebsd/sys/dev/qat/qat_api/qat_utils/src/QatUtilsAtomic.c (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /* Copyright(c) 2007-2022 Intel Corporation */
3 #include "qat_utils.h"
4 
5 #ifdef __x86_64__
6 __inline int64_t
7 qatUtilsAtomicGet(QatUtilsAtomic *pAtomicVar)
8 {
9 	return ((int64_t)atomic64_read((QatUtilsAtomic *)pAtomicVar));
10 }
11 
12 __inline void
13 qatUtilsAtomicSet(int64_t inValue, QatUtilsAtomic *pAtomicVar)
14 {
15 	atomic64_set((QatUtilsAtomic *)pAtomicVar, inValue);
16 }
17 
18 __inline int64_t
19 qatUtilsAtomicAdd(int64_t inValue, QatUtilsAtomic *pAtomicVar)
20 {
21 	return atomic64_add_return((long)inValue, (QatUtilsAtomic *)pAtomicVar);
22 }
23 
24 __inline int64_t
25 qatUtilsAtomicSub(int64_t inValue, QatUtilsAtomic *pAtomicVar)
26 {
27 	return atomic64_sub_return((long)inValue, (QatUtilsAtomic *)pAtomicVar);
28 }
29 
30 __inline int64_t
31 qatUtilsAtomicInc(QatUtilsAtomic *pAtomicVar)
32 {
33 	return atomic64_inc_return((QatUtilsAtomic *)pAtomicVar);
34 }
35 
36 __inline int64_t
37 qatUtilsAtomicDec(QatUtilsAtomic *pAtomicVar)
38 {
39 	return atomic64_dec_return((QatUtilsAtomic *)pAtomicVar);
40 }
41 #else
42 __inline int64_t
43 qatUtilsAtomicGet(QatUtilsAtomic *pAtomicVar)
44 {
45 	return ((int64_t)atomic_read((QatUtilsAtomic *)pAtomicVar));
46 }
47 
48 __inline void
49 qatUtilsAtomicSet(int64_t inValue, QatUtilsAtomic *pAtomicVar)
50 {
51 	atomic_set((QatUtilsAtomic *)pAtomicVar, inValue);
52 }
53 
54 __inline int64_t
55 qatUtilsAtomicAdd(int64_t inValue, QatUtilsAtomic *pAtomicVar)
56 {
57 	return atomic_add_return(inValue, (QatUtilsAtomic *)pAtomicVar);
58 }
59 
60 __inline int64_t
61 qatUtilsAtomicSub(int64_t inValue, QatUtilsAtomic *pAtomicVar)
62 {
63 	return atomic_sub_return(inValue, (QatUtilsAtomic *)pAtomicVar);
64 }
65 
66 __inline int64_t
67 qatUtilsAtomicInc(QatUtilsAtomic *pAtomicVar)
68 {
69 	return atomic_inc_return((QatUtilsAtomic *)pAtomicVar);
70 }
71 
72 __inline int64_t
73 qatUtilsAtomicDec(QatUtilsAtomic *pAtomicVar)
74 {
75 	return atomic_dec_return((QatUtilsAtomic *)pAtomicVar);
76 }
77 #endif
78