@@ -226,21 +226,20 @@ static bool evtchn_fifo_is_masked(evtchn_port_t port)
226
226
*/
227
227
static bool clear_masked_cond (volatile event_word_t * word )
228
228
{
229
- event_word_t new , old , w ;
229
+ event_word_t new , old ;
230
230
231
- w = * word ;
231
+ old = * word ;
232
232
233
233
do {
234
- if (!(w & (1 << EVTCHN_FIFO_MASKED )))
234
+ if (!(old & (1 << EVTCHN_FIFO_MASKED )))
235
235
return true;
236
236
237
- if (w & (1 << EVTCHN_FIFO_PENDING ))
237
+ if (old & (1 << EVTCHN_FIFO_PENDING ))
238
238
return false;
239
239
240
- old = w & ~(1 << EVTCHN_FIFO_BUSY );
240
+ old = old & ~(1 << EVTCHN_FIFO_BUSY );
241
241
new = old & ~(1 << EVTCHN_FIFO_MASKED );
242
- w = sync_cmpxchg (word , old , new );
243
- } while (w != old );
242
+ } while (!sync_try_cmpxchg (word , & old , new ));
244
243
245
244
return true;
246
245
}
@@ -259,17 +258,16 @@ static void evtchn_fifo_unmask(evtchn_port_t port)
259
258
260
259
static uint32_t clear_linked (volatile event_word_t * word )
261
260
{
262
- event_word_t new , old , w ;
261
+ event_word_t new , old ;
263
262
264
- w = * word ;
263
+ old = * word ;
265
264
266
265
do {
267
- old = w ;
268
- new = (w & ~((1 << EVTCHN_FIFO_LINKED )
269
- | EVTCHN_FIFO_LINK_MASK ));
270
- } while ((w = sync_cmpxchg (word , old , new )) != old );
266
+ new = (old & ~((1 << EVTCHN_FIFO_LINKED )
267
+ | EVTCHN_FIFO_LINK_MASK ));
268
+ } while (!sync_try_cmpxchg (word , & old , new ));
271
269
272
- return w & EVTCHN_FIFO_LINK_MASK ;
270
+ return old & EVTCHN_FIFO_LINK_MASK ;
273
271
}
274
272
275
273
static void consume_one_event (unsigned cpu , struct evtchn_loop_ctrl * ctrl ,
0 commit comments