Hello,
On Sun, 20 Mar 2016 14:36:05 -0400, Rich Felker wrote:
If you
mean (1), then before my patch, the ldrex/strex code was only
enabled when USE_LDREXSTREX was enabled, and this option had a "depends
on COMPILE_IN_THUMB". Hence my patch doesn't change the fact that
the ldrex/strex logic is only used on Thumb. Whether it can/should be
enabled in non-Thumb configurations is a separate matter from what my
patch is doing.
OK, then the logic was wrong before, too. :-)
Right, but my patch is not making it worse than it was.
If you
mean (2), then there is indeed a problem. Though, according to
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/14979.html,
"On a v6 or later core (ARM11 onwards) you should use the LDREX/STREX
instructions instead", which would suggest that such instructions are
available.
Indeed, and it's further complicated by the fact that none of these
instructions are proper memory barriers so they're basically useless
without a separate barrier instruction, which does not exist on
pre-v6, and on v6, only as a coprocessor operation that's not
available in thumb1 or on uc models. Not until v7 did arm have proper
working atomics. :(
Sure. But here as well, my patch is not making things worse I believe.
Agreed. My only concern would be whether your patch makes it harder to
fix, but that's not my call to make.
Rich