[LTP] [PATCH] arm64: add tst_atomic_add_return
Jan Stancek
jstancek@redhat.com
Fri Jan 27 13:21:34 CET 2017
----- Original Message -----
> From: "Jan Stancek" <jstancek@redhat.com>
> To: "Yury Norov" <ynorov@caviumnetworks.com>
> Cc: ltp@lists.linux.it
> Sent: Friday, 27 January, 2017 11:02:03 AM
> Subject: Re: [LTP] [PATCH] arm64: add tst_atomic_add_return
>
>
>
>
>
> ----- Original Message -----
> > From: "Yury Norov" <ynorov@caviumnetworks.com>
> > To: ltp@lists.linux.it
> > Sent: Wednesday, 25 January, 2017 10:13:42 PM
> > Subject: [LTP] [PATCH] arm64: add tst_atomic_add_return
> >
> > The patch fixes build of LTP, at least with gcc 5.3.
> > The implementation is taken from kernel v4.9.
> >
> > Signed-off-by: Yury Norov <ynorov@caviumnetworks.com>
> > ---
> > include/tst_atomic.h | 21 +++++++++++++++++++++
> > 1 file changed, 21 insertions(+)
>
> Hi,
>
> looks good to me, I'm getting a system to test this as well.
Forced my config to use new tst_atomic_return and ran few tests.
There were no issues.
@Cyril: would you like to try this too on some SuSe distros
or can I go ahead and push it?
Regards,
Jan
>
> Regards,
> Jan
>
> >
> > diff --git a/include/tst_atomic.h b/include/tst_atomic.h
> > index 799d735..35a3b34 100644
> > --- a/include/tst_atomic.h
> > +++ b/include/tst_atomic.h
> > @@ -131,6 +131,27 @@ static inline int tst_atomic_add_return(int i, int *v)
> >
> > return val;
> > }
> > +
> > +#elif defined (__aarch64__)
> > +static inline int tst_atomic_add_return(int i, int *v)
> > +{
> > + unsigned long tmp;
> > + int result;
> > +
> > + __asm__ __volatile__(
> > +" prfm pstl1strm, %2 \n"
> > +"1: ldxr %w0, %2 \n"
> > +" add %w0, %w0, %w3 \n"
> > +" stlxr %w1, %w0, %2 \n"
> > +" cbnz %w1, 1b \n"
> > +" dmb ish \n"
> > + : "=&r" (result), "=&r" (tmp), "+Q" (*v)
> > + : "Ir" (i)
> > + : "memory");
> > +
> > + return result;
> > +}
> > +
> > #else /* HAVE_SYNC_ADD_AND_FETCH == 1 */
> > # error Your compiler does not provide __sync_add_and_fetch and LTP\
> > implementation is missing for your architecture.
> > --
> > 2.7.4
> >
> >
> > --
> > Mailing list info: https://lists.linux.it/listinfo/ltp
> >
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>
More information about the ltp
mailing list