This is the mail archive of the 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.

You are correct, the behavior is undefined and your patch does the
right thing.  I'll pass this along to the CMSIS folks and give them a
heads up.


On Thu, Sep 22, 2011 at 5:59 AM, James Greenhalgh
<> wrote:
> 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
> 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] -
> tml

"Those who would give up essential liberty to purchase a little
temporary safety deserve neither liberty nor safety."

-- Benjamin Franklin, Historical Review of Pennsylvania, 1759

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