[PATCH, ARM] MSR/MRS assembly and disassembly tweaks

Julian Brown julian@codesourcery.com
Mon Apr 18 13:54:00 GMT 2011


On Mon, 18 Apr 2011 14:29:33 +0100
Nick Clifton <nickc@redhat.com> wrote:

> Hi Julian,
> 
> >      gas/
> >      * config/tc-arm.c (parse_psr): Use selected_cpu not
> > cpu_variant to detect M-profile targets.
> >
> >      include/
> >      * opcode/arm.h (ARM_AEXT_V7_ARM): Remove ARM_EXT_OS from
> > bitmask.
> 
> Right - I have applied this patch together with some fixes of my own. 
> (Full patch attached).  We now have zero unexpected failures in the
> GAS testsuite for EABI, ELF and PE based ARM toolchains.

Thanks for this!

> The problem with the SVC test was that removing ARM_EXT_OS from 
> ARM_AEXT_V7_ARM meant that -march=armv7 would select an architecture 
> that included v6m but which did not set ARM_EXT_OS.  This is correct, 
> but the code in do_t_swi() did not allow for this and so triggered a 
> bogus error condition.  I fixed this by extending the test in do_t_swi
> to exclude all v7 and higher architectures.

I don't understand the subtleties of what ARM_EXT_OS is supposed to do
enough to comment on this, I don't think...

> One thing that I am not sure about is the correct name for V7M PSR 
> register 18.  Is it BASEPRI_MASK or BASEPRI_MAX.  Judging by the
> other register names it is BASEPRI_MASK, but I could not find any 
> documentation to confirm this.
> opcodes/ChangeLog
> 2011-04-18  Nick Clifton  <nickc@redhat.com>
> 
> 	* arm-dis.c (psr_name): Revert previous delta.

But I don't think this reversion is right. AFAICT IAPSR, etc. can have
bitmasks specified for the APSR parts. Also AFAICT the name of the
register is BASEPRI_MAX, and any use of BASEPRI_MASK is wrong. See e.g.:

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489c/Cihjcedb.html

Cheers,

Julian



More information about the Binutils mailing list