[PATCH 2/7] riscv: Implement cmpxchg8/16() using Zabha

Alexandre Ghiti alexghiti at rivosinc.com
Wed May 29 05:55:58 PDT 2024


On Wed, May 29, 2024 at 2:29 PM Alexandre Ghiti <alexghiti at rivosinc.com> wrote:
>
> On Wed, May 29, 2024 at 1:54 AM Andrea Parri <parri.andrea at gmail.com> wrote:
> >
> > > +zabha:                                                                       \
> > > +     __asm__ __volatile__ (                                          \
> > > +             prepend                                                 \
> > > +             "       amocas" cas_sfx " %0, %z2, %1\n"                \
> > > +             append                                                  \
> > > +             : "+&r" (r), "+A" (*(p))                                \
> > > +             : "rJ" (n)                                              \
> > > +             : "memory");                                            \
> >
> > Couldn't a platform have Zabha but not have Zacas?  I don't see how this
> > asm goto could work in such case, what am I missing?
>
> Zabha amocas.[b|h] instructions are only implemented if Zacas is
> present, as the specification states: "If Zacas [2] extension is also
> implemented, Zabha further provides the AMOCAS.[B|H] instructions."
>
> But the code you mention is only for 8 and 16bit operations, so I
> think we are good anyway?

And I was wrong like Andrea noted privately. So I'll fix that too, thanks!

>
> Thanks,
>
> Alex
>
> >
> >   Andrea



More information about the linux-riscv mailing list