From: Kyle McMartin <kmcmarti@redhat.com>
To: Marcus Shawcroft <marcus.shawcroft@gmail.com>
Cc: "gdb-patches@sourceware.org" <gdb-patches@sourceware.org>
Subject: Re: [PATCHv2] aarch64: detect atomic sequences like other ll/sc architectures
Date: Thu, 27 Mar 2014 15:40:00 -0000 [thread overview]
Message-ID: <20140327154033.GI3075@redacted.bos.redhat.com> (raw)
In-Reply-To: <CAFqB+Px4rL39pOqA8vxKOC7BDxRCUq8TTCixyk+aRoJ8MnNmMg@mail.gmail.com>
On Thu, Mar 27, 2014 at 02:07:35PM +0000, Marcus Shawcroft wrote:
> Are you sure these masks and patterns are accurate? Looks to me that
> this excludes many of the load exclusive instructions and includes
> part of the unallocated encoding space. There are several different
> encodings to match here covering ld[a]xr{b,h,} and ld[a]xp. The masks
> and patterns will be something like:
>
> 0xbfff7c00 0x085f7c00
> 0xbfff7c00 0x885f7c00
> 0xbfff0000 0x887f0000
>
> > + if (decode_masked_match (insn, 0x3fc00000, 0x08000000))
>
> This also looks wrong.
>
Eh... I tested all 24 possible ldxr/stxr opcodes...
https://github.com/jkkm/aarch64-ldxr-stxr-match/blob/master/example.txt
Maybe I'm missing something, but I think it's alright.
> > + /* Test that we can step over ldxr/stxr. This sequence should step from
> > + ldxr to the following __asm __volatile. */
> > + __asm __volatile ("1: ldxr %0,%2\n" \
> > + " cmp %0,#1\n" \
> > + " b.eq out\n" \
> > + " add %0,%0,1\n" \
> > + " stxr %w1,%0,%2\n" \
> > + " cbnz %w1,1b" \
> > + : "=&r" (tmp), "=&r" (cond), "+Q" (dword) \
> > + : : "memory");
> > +
> > + /* This sequence should take the conditional branch and step from ldxr
> > + to the return dword line. */
> > + __asm __volatile ("1: ldxr %0,%2\n" \
> > + " cmp %0,#1\n" \
> > + " b.eq out\n" \
> > + " add %0,%0,1\n" \
> > + " stxr %w1,%0,%2\n" \
> > + " cbnz %w1,1b\n" \
> > + : "=&r" (tmp), "=&r" (cond), "+Q" (dword) \
> > + : : "memory");
> > +
> > + dword = -1;
> > +__asm __volatile ("out:\n");
> > + return dword;
> > +}
>
> How about testing at least one instruction from each group of load
> store exclusives?
>
I'm just following what PPC64 did... I think the only thing they really
want to check is that it correctly steps over the sequence (the original
case didn't bother testing the conditional branch path.) I could add
further cases, but it seems a bit pointless... but if you're going to
block committing on that basis I guess I can cook it up.
regards, Kyle
> Cheers
> /Marcus
next prev parent reply other threads:[~2014-03-27 15:40 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-27 1:51 Kyle McMartin
2014-03-27 13:07 ` Joel Brobecker
2014-03-27 15:45 ` Kyle McMartin
2014-03-27 14:07 ` Marcus Shawcroft
2014-03-27 15:40 ` Kyle McMartin [this message]
2014-03-27 16:13 ` Marcus Shawcroft
2014-03-27 16:37 ` Kyle McMartin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140327154033.GI3075@redacted.bos.redhat.com \
--to=kmcmarti@redhat.com \
--cc=gdb-patches@sourceware.org \
--cc=marcus.shawcroft@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox