Lines Matching refs:ptr
27 #define __LDREXW(ptr) ((rt_atomic_t ) __ldre… argument
29 #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((rt_atomic_t ) __ldre… argument
32 _Pragma("inline=forced") __intrinsic rt_atomic_t __LDREXW(volatile rt_atomic_t *ptr) in __LDREXW() argument
34 return __iar_builtin_LDREX((volatile unsigned int *)ptr); in __LDREXW()
58 #define __STREXW(value, ptr) __strex(value, ptr) argument
60 #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) … argument
63 …gma("inline=forced") __intrinsic rt_atomic_t __STREXW(rt_atomic_t value, volatile rt_atomic_t *ptr) in __STREXW() argument
65 return __STREX(value, (unsigned int *)ptr); in __STREXW()
77 rt_atomic_t rt_hw_atomic_load(volatile rt_atomic_t *ptr) in rt_hw_atomic_load() argument
82 oldval = __LDREXW(ptr); in rt_hw_atomic_load()
83 } while ((__STREXW(oldval, ptr)) != 0U); in rt_hw_atomic_load()
87 void rt_hw_atomic_store(volatile rt_atomic_t *ptr, rt_atomic_t val) in rt_hw_atomic_store() argument
91 __LDREXW(ptr); in rt_hw_atomic_store()
92 } while ((__STREXW(val, ptr)) != 0U); in rt_hw_atomic_store()
95 rt_atomic_t rt_hw_atomic_add(volatile rt_atomic_t *ptr, rt_atomic_t val) in rt_hw_atomic_add() argument
100 oldval = __LDREXW(ptr); in rt_hw_atomic_add()
101 } while ((__STREXW(oldval + val, ptr)) != 0U); in rt_hw_atomic_add()
105 rt_atomic_t rt_hw_atomic_sub(volatile rt_atomic_t *ptr, rt_atomic_t val) in rt_hw_atomic_sub() argument
110 oldval = __LDREXW(ptr); in rt_hw_atomic_sub()
111 } while ((__STREXW(oldval - val, ptr)) != 0U); in rt_hw_atomic_sub()
115 rt_atomic_t rt_hw_atomic_and(volatile rt_atomic_t *ptr, rt_atomic_t val) in rt_hw_atomic_and() argument
120 oldval = __LDREXW(ptr); in rt_hw_atomic_and()
121 } while ((__STREXW(oldval & val, ptr)) != 0U); in rt_hw_atomic_and()
125 rt_atomic_t rt_hw_atomic_or(volatile rt_atomic_t *ptr, rt_atomic_t val) in rt_hw_atomic_or() argument
130 oldval = __LDREXW(ptr); in rt_hw_atomic_or()
131 } while ((__STREXW(oldval | val, ptr)) != 0U); in rt_hw_atomic_or()
135 rt_atomic_t rt_hw_atomic_xor(volatile rt_atomic_t *ptr, rt_atomic_t val) in rt_hw_atomic_xor() argument
140 oldval = __LDREXW(ptr); in rt_hw_atomic_xor()
141 } while ((__STREXW(oldval ^ val, ptr)) != 0U); in rt_hw_atomic_xor()
145 rt_atomic_t rt_hw_atomic_exchange(volatile rt_atomic_t *ptr, rt_atomic_t val) in rt_hw_atomic_exchange() argument
150 oldval = __LDREXW(ptr); in rt_hw_atomic_exchange()
151 } while ((__STREXW(val, ptr)) != 0U); in rt_hw_atomic_exchange()
155 void rt_hw_atomic_flag_clear(volatile rt_atomic_t *ptr) in rt_hw_atomic_flag_clear() argument
159 __LDREXW(ptr); in rt_hw_atomic_flag_clear()
160 } while ((__STREXW(0, ptr)) != 0U); in rt_hw_atomic_flag_clear()
163 rt_atomic_t rt_hw_atomic_flag_test_and_set(volatile rt_atomic_t *ptr) in rt_hw_atomic_flag_test_and_set() argument
168 oldval = __LDREXW(ptr); in rt_hw_atomic_flag_test_and_set()
169 } while ((__STREXW(1, ptr)) != 0U); in rt_hw_atomic_flag_test_and_set()
173 rt_atomic_t rt_hw_atomic_compare_exchange_strong(volatile rt_atomic_t *ptr, rt_atomic_t *old, rt_at… in rt_hw_atomic_compare_exchange_strong() argument
179 result = __LDREXW(ptr); in rt_hw_atomic_compare_exchange_strong()
183 __STREXW(result, ptr); in rt_hw_atomic_compare_exchange_strong()
186 } while ((__STREXW(new, ptr)) != 0U); in rt_hw_atomic_compare_exchange_strong()