Hi Gage,

snipped
> > @@ -208,4 +209,25 @@ static inline void
> rte_atomic64_clear(rte_atomic64_t *v)
> >   }
> >   #endif
> >
> > +static inline int
> > +rte_atomic128_cmpset(volatile uint64_t *dst, uint64_t *exp, uint64_t
> > +*src) {
> > +   uint8_t res;
> > +
> > +   asm volatile (
> > +                 MPLOCKED
> > +                 "cmpxchg16b %[dst];"
> > +                 " sete %[res]"
> > +                 : [dst] "=m" (*dst),
> > +                   [res] "=r" (res)
> > +                 : "c" (src[1]),
> > +                   "b" (src[0]),
> > +                   "m" (*dst),
> > +                   "d" (exp[1]),
> > +                   "a" (exp[0])
> > +                 : "memory");
Since update depends upon on the 'set|unset' value of ZF, should we first set 
ZF to 0?

Apologies in advance if it is internally taken care by 'sete'.

> > +
> > +   return res;
> > +}
> > +
> >   #endif /* _RTE_ATOMIC_X86_64_
> 
> Is it OK to add it to rte_atomic_64.h header which is for 64-bit integer ops?
> 
> Andrew.
> > H_ */

Reply via email to