This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [Patch ARM Gas] - strexh/strexb warn for bad addressing modes.


Hi,
 
> If you read this literally, it only says STREX has the restriction that
> you've added to gas, and that it doesn't apply to any of the other ones
> (in
> particular STREXH and STREXB).  I'm not sure if this is the same across
> all
> the ARM7/9/11 processors, but it certainly seems that this should be an
> allowed instruction for Cortex M3, given that they are shipping this
> instruction with their CMSIS stuff.

In my copy of the ARMARMv7M [0] strexb, strexh and strex are all listed
as UNPREDICTABLE when rd == rt || rd == rn.

I would read the quoted passage of the User Guide Reference Material
as saying  "for Store-Exclusive Instructions, Rd must be different
from both Rt and Rn". Which better fits with the description in the
ARMARM.

There is potentially an argument for making these UNPREDICTABLE behaviours
warnings, but this would just mask the real issue, which, IMHO is
that the library is not sufficiently cautious with the registers it uses
for these instructions.

If you want further advice on the CMSIS libraries I would suggest going 
through your normal CMSIS support channels.

Regards
James Greenhalgh

[0] -
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0403c/index.h
tml




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]