File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -56,14 +56,14 @@ static inline void arch_atomic_init(atomic_t *a, int32_t value)
5656}
5757
5858/* use gcc atomic built-ins for host library */
59- static inline void arch_atomic_add (atomic_t * a , int32_t value )
59+ static inline int32_t arch_atomic_add (atomic_t * a , int32_t value )
6060{
61- __sync_fetch_and_add (& a -> value , value );
61+ return __sync_fetch_and_add (& a -> value , value );
6262}
6363
64- static inline void arch_atomic_sub (atomic_t * a , int32_t value )
64+ static inline int32_t arch_atomic_sub (atomic_t * a , int32_t value )
6565{
66- __sync_fetch_and_sub (& a -> value , value );
66+ return __sync_fetch_and_sub (& a -> value , value );
6767}
6868
6969#endif
Original file line number Diff line number Diff line change @@ -54,7 +54,7 @@ static inline void arch_atomic_init(atomic_t *a, int32_t value)
5454 arch_atomic_set (a , value );
5555}
5656
57- static inline void arch_atomic_add (atomic_t * a , int32_t value )
57+ static inline int32_t arch_atomic_add (atomic_t * a , int32_t value )
5858{
5959 int32_t result , current ;
6060
@@ -67,9 +67,11 @@ static inline void arch_atomic_add(atomic_t *a, int32_t value)
6767 : "=&a" (result ), "=&a" (current )
6868 : "a" (& a -> value ), "a" (value )
6969 : "memory" );
70+
71+ return (* (volatile int32_t * )& a -> value );
7072}
7173
72- static inline void arch_atomic_sub (atomic_t * a , int32_t value )
74+ static inline int32_t arch_atomic_sub (atomic_t * a , int32_t value )
7375{
7476 int32_t result , current ;
7577
@@ -82,6 +84,8 @@ static inline void arch_atomic_sub(atomic_t *a, int32_t value)
8284 : "=&a" (result ), "=&a" (current )
8385 : "a" (& a -> value ), "a" (value )
8486 : "memory" );
87+
88+ return (* (volatile int32_t * )& a -> value );
8589}
8690
8791#endif
Original file line number Diff line number Diff line change @@ -50,14 +50,14 @@ static inline void atomic_set(atomic_t *a, int32_t value)
5050 arch_atomic_set (a , value );
5151}
5252
53- static inline void atomic_add (atomic_t * a , int32_t value )
53+ static inline int32_t atomic_add (atomic_t * a , int32_t value )
5454{
55- arch_atomic_add (a , value );
55+ return arch_atomic_add (a , value );
5656}
5757
58- static inline void atomic_sub (atomic_t * a , int32_t value )
58+ static inline int32_t atomic_sub (atomic_t * a , int32_t value )
5959{
60- arch_atomic_sub (a , value );
60+ return arch_atomic_sub (a , value );
6161}
6262
6363#endif
You can’t perform that action at this time.
0 commit comments