@@ -83,7 +83,7 @@ opal_read_counted_pointer(volatile opal_counted_pointer_t *volatile addr,
83
83
* specific order */
84
84
value -> data .counter = addr -> data .counter ;
85
85
opal_atomic_rmb ();
86
- opal_atomic_store_ptr_relaxed (& value -> data .item , opal_atomic_load_ptr_relaxed (& addr -> data .item ));
86
+ opal_atomic_store_ptr_volatile_relaxed (& value -> data .item , opal_atomic_load_ptr_volatile_relaxed (& addr -> data .item ));
87
87
}
88
88
89
89
#endif
@@ -140,7 +140,7 @@ static inline opal_list_item_t *opal_lifo_push_atomic(opal_lifo_t *lifo, opal_li
140
140
opal_atomic_wmb ();
141
141
142
142
/* to protect against ABA issues it is sufficient to only update the counter in pop */
143
- if (opal_atomic_compare_exchange_strong_ptr (& lifo -> opal_lifo_head .data .item ,
143
+ if (opal_atomic_compare_exchange_strong_ptr_volatile (& lifo -> opal_lifo_head .data .item ,
144
144
(intptr_t * ) & next , (intptr_t ) item )) {
145
145
return next ;
146
146
}
@@ -159,7 +159,7 @@ static inline opal_list_item_t *opal_lifo_pop_atomic(opal_lifo_t *lifo)
159
159
opal_read_counted_pointer (& lifo -> opal_lifo_head , & old_head );
160
160
161
161
do {
162
- item = (opal_list_item_t * ) opal_atomic_load_ptr_relaxed (& old_head .data .item );
162
+ item = (opal_list_item_t * ) opal_atomic_load_ptr_volatile_relaxed (& old_head .data .item );
163
163
if (item == & lifo -> opal_lifo_ghost ) {
164
164
return NULL ;
165
165
}
@@ -189,7 +189,7 @@ static inline opal_list_item_t *opal_lifo_push_atomic(opal_lifo_t *lifo, opal_li
189
189
do {
190
190
item -> opal_list_next = next ;
191
191
opal_atomic_wmb ();
192
- if (opal_atomic_compare_exchange_strong_ptr (& lifo -> opal_lifo_head .data .item ,
192
+ if (opal_atomic_compare_exchange_strong_ptr_volatile (& lifo -> opal_lifo_head .data .item ,
193
193
(intptr_t * ) & next , (intptr_t ) item )) {
194
194
opal_atomic_wmb ();
195
195
/* now safe to pop this item */
@@ -252,7 +252,7 @@ static inline opal_list_item_t *opal_lifo_pop_atomic(opal_lifo_t *lifo)
252
252
253
253
head = item ;
254
254
/* try to swap out the head pointer */
255
- if (opal_atomic_compare_exchange_strong_ptr (& lifo -> opal_lifo_head .data .item ,
255
+ if (opal_atomic_compare_exchange_strong_ptr_volatile (& lifo -> opal_lifo_head .data .item ,
256
256
(intptr_t * ) & head ,
257
257
(intptr_t ) item -> opal_list_next )) {
258
258
break ;
0 commit comments