From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/4] ARM: atomic ops: reduce critical region in atomic64_cmpxchg
Date: Thu, 8 Jul 2010 10:43:31 +0100 [thread overview]
Message-ID: <004c01cb1e82$070aa130$151fe390$@deacon@arm.com> (raw)
In-Reply-To: <alpine.LFD.2.00.1007080045450.6020@xanadu.home>
Hello,
> > diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h
> > index e9e56c0..4f0f282 100644
> > --- a/arch/arm/include/asm/atomic.h
> > +++ b/arch/arm/include/asm/atomic.h
> > @@ -358,8 +358,8 @@ static inline u64 atomic64_cmpxchg(atomic64_t *ptr, u64 old, u64 new)
> >
> > do {
> > __asm__ __volatile__("@ atomic64_cmpxchg\n"
> > - "ldrexd %1, %H1, [%2]\n"
> > "mov %0, #0\n"
> > + "ldrexd %1, %H1, [%2]\n"
> > "teq %1, %3\n"
> > "teqeq %H1, %H3\n"
> > "strexdeq %0, %4, %H4, [%2]"
>
> I'm not sure you gain anything here. The ldrexd probably requires at
> least one result delay cycle which is filled by the mov instruction.
> By moving the mov insn before the ldrexd you are probably making the
> whole sequence one cycle longer.
You're right. In fact, thinking about it, this patch is largely
superficial because if the core can do exclusive load/stores then
the mov will be issued down a separate pipeline anyway.
I'll drop this one from the patch series and submit the other three.
Thanks,
Will
next prev parent reply other threads:[~2010-07-08 9:43 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-30 14:04 [PATCH 0/4] Fix atomic operations so that atomic64_test passes on ARM [V2] Will Deacon
2010-06-30 14:04 ` [PATCH 1/4] ARM: atomic ops: fix register constraints for atomic64_add_unless Will Deacon
2010-06-30 14:04 ` [PATCH 2/4] ARM: atomic ops: reduce critical region in atomic64_cmpxchg Will Deacon
2010-06-30 14:04 ` [PATCH 3/4] ARM: atomic ops: add memory constraints to inline asm Will Deacon
2010-06-30 14:04 ` [PATCH 4/4] ARM: atomic64_test: add ARM as supported architecture Will Deacon
2010-07-08 5:50 ` Nicolas Pitre
2010-07-07 16:42 ` [PATCH 3/4] ARM: atomic ops: add memory constraints to inline asm Will Deacon
2010-07-08 5:49 ` Nicolas Pitre
2010-07-08 9:36 ` Will Deacon
[not found] ` <004b01cb1e81$0b745960$225d0c20$%deacon@arm.com>
2010-07-08 12:42 ` Nicolas Pitre
[not found] ` <004101cb1df3$5825ecd0$0871c670$%deacon@arm.com>
2010-07-08 5:58 ` Nicolas Pitre
2010-07-08 10:03 ` Will Deacon
2010-07-08 4:49 ` [PATCH 2/4] ARM: atomic ops: reduce critical region in atomic64_cmpxchg Nicolas Pitre
2010-07-08 9:43 ` Will Deacon [this message]
2010-07-08 4:37 ` [PATCH 1/4] ARM: atomic ops: fix register constraints for atomic64_add_unless Nicolas Pitre
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='004c01cb1e82$070aa130$151fe390$@deacon@arm.com' \
--to=will.deacon@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.