@@ -70,7 +70,7 @@ static inline bool opal_update_counted_pointer(volatile opal_counted_pointer_t *
7070 opal_counted_pointer_t * old , opal_list_item_t * item )
7171{
7272 opal_counted_pointer_t new_p ;
73- opal_atomic_store_ptr_relaxed (& new_p .data .item , (intptr_t ) item );
73+ opal_atomic_store_ptr_volatile_relaxed (& new_p .data .item , (intptr_t ) item );
7474 new_p .data .counter = old -> data .counter + 1 ;
7575 return opal_atomic_compare_exchange_strong_128 (& addr -> atomic_value , & old -> value , new_p .value );
7676}
@@ -122,7 +122,7 @@ OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_lifo_t);
122122 */
123123static inline bool opal_lifo_is_empty (opal_lifo_t * lifo )
124124{
125- return (opal_list_item_t * ) opal_atomic_load_ptr_relaxed (& lifo -> opal_lifo_head .data .item ) == & lifo -> opal_lifo_ghost ;
125+ return (opal_list_item_t * ) opal_atomic_load_ptr_volatile_relaxed (& lifo -> opal_lifo_head .data .item ) == & lifo -> opal_lifo_ghost ;
126126}
127127
128128#if OPAL_HAVE_ATOMIC_COMPARE_EXCHANGE_128 && !OPAL_HAVE_ATOMIC_LLSC_PTR
@@ -133,7 +133,7 @@ static inline bool opal_lifo_is_empty(opal_lifo_t *lifo)
133133 */
134134static inline opal_list_item_t * opal_lifo_push_atomic (opal_lifo_t * lifo , opal_list_item_t * item )
135135{
136- opal_list_item_t * next = (opal_list_item_t * ) opal_atomic_load_ptr_relaxed (& lifo -> opal_lifo_head .data .item );
136+ opal_list_item_t * next = (opal_list_item_t * ) opal_atomic_load_ptr_volatile_relaxed (& lifo -> opal_lifo_head .data .item );
137137
138138 do {
139139 item -> opal_list_next = next ;
@@ -181,7 +181,7 @@ static inline opal_list_item_t *opal_lifo_pop_atomic(opal_lifo_t *lifo)
181181 */
182182static inline opal_list_item_t * opal_lifo_push_atomic (opal_lifo_t * lifo , opal_list_item_t * item )
183183{
184- opal_list_item_t * next = (opal_list_item_t * ) opal_atomic_load_ptr_relaxed (& lifo -> opal_lifo_head .data .item );
184+ opal_list_item_t * next = (opal_list_item_t * ) opal_atomic_load_ptr_volatile_relaxed (& lifo -> opal_lifo_head .data .item );
185185
186186 /* item free acts as a mini lock to avoid ABA problems */
187187 item -> item_free = 1 ;
@@ -242,7 +242,7 @@ static inline opal_list_item_t *opal_lifo_pop_atomic(opal_lifo_t *lifo)
242242{
243243 opal_list_item_t * item , * head , * ghost = & lifo -> opal_lifo_ghost ;
244244
245- while ((item = (opal_list_item_t * ) opal_atomic_load_ptr_relaxed (& lifo -> opal_lifo_head .data .item )) != ghost ) {
245+ while ((item = (opal_list_item_t * ) opal_atomic_load_ptr_volatile_relaxed (& lifo -> opal_lifo_head .data .item )) != ghost ) {
246246 /* ensure it is safe to pop the head */
247247 if (opal_atomic_swap_32 ((opal_atomic_int32_t * ) & item -> item_free , 1 )) {
248248 continue ;
@@ -282,17 +282,17 @@ static inline opal_list_item_t *opal_lifo_pop_atomic(opal_lifo_t *lifo)
282282/* single-threaded versions of the lifo functions */
283283static inline opal_list_item_t * opal_lifo_push_st (opal_lifo_t * lifo , opal_list_item_t * item )
284284{
285- item -> opal_list_next = (opal_list_item_t * ) opal_atomic_load_ptr_relaxed (& lifo -> opal_lifo_head .data .item );
285+ item -> opal_list_next = (opal_list_item_t * ) opal_atomic_load_ptr_volatile_relaxed (& lifo -> opal_lifo_head .data .item );
286286 item -> item_free = 0 ;
287- opal_atomic_store_ptr_relaxed (& lifo -> opal_lifo_head .data .item , (intptr_t ) item );
287+ opal_atomic_store_ptr_volatile_relaxed (& lifo -> opal_lifo_head .data .item , (intptr_t ) item );
288288 return (opal_list_item_t * ) item -> opal_list_next ;
289289}
290290
291291static inline opal_list_item_t * opal_lifo_pop_st (opal_lifo_t * lifo )
292292{
293293 opal_list_item_t * item ;
294- item = (opal_list_item_t * ) opal_atomic_load_ptr_relaxed (& lifo -> opal_lifo_head .data .item );
295- opal_atomic_store_ptr_relaxed (& lifo -> opal_lifo_head .data .item , (intptr_t ) item -> opal_list_next );
294+ item = (opal_list_item_t * ) opal_atomic_load_ptr_volatile_relaxed (& lifo -> opal_lifo_head .data .item );
295+ opal_atomic_store_ptr_volatile_relaxed (& lifo -> opal_lifo_head .data .item , (intptr_t ) item -> opal_list_next );
296296 if (item == & lifo -> opal_lifo_ghost ) {
297297 return NULL ;
298298 }
0 commit comments