On 2017-07-14 14:22, Richard Henderson wrote:
> On 07/14/2017 11:01 AM, Aurelien Jarno wrote:
> > > + if (parallel_cpus) {
> > > + int mask = 0;
> > > +#if !defined(CONFIG_ATOMIC64)
> > > + mask = -8;
> > > +#elif !defined(CONFIG_ATOMIC128)
> > > + mask = -16;
> > > +#endif
> > > + if (((4 << fc) | (1 << sc)) & mask) {
> > > + cpu_loop_exit_atomic(ENV_GET_CPU(env), ra);
> > > + }
> > > + }
> >
> > This doesn't look correct. For a 16-byte store, ie sc = 4, and with
> > ATOMIC128 support, ie mask = -16, the condition is true.
>
> That's WITHOUT atomic128 support that mask = -16.
> If we have atomic128, then mask = 0.
Oh, right, it all looks correct then.
Reviewed-by: Aurelien Jarno <[email protected]>
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
[email protected] http://www.aurel32.net