gas: sparc: allow ASR registers in the 0..31 range in V9 and later
authorJose E. Marchesi <jose.marchesi@oracle.com>
Thu, 24 Mar 2016 17:28:41 +0000 (10:28 -0700)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Thu, 24 Mar 2016 17:28:41 +0000 (10:28 -0700)
commitf65c3d1b26e05f445d976aabd48d4b1264c182bc
tree796d86af695843bb83b63ab412449fdbb8fec17c
parenta6b71f422b2a4c1dae639064945bc8697528c57b
gas: sparc: allow ASR registers in the 0..31 range in V9 and later

In the SPARC V9 (and later) versions of the SPARC specification, the
section C.1.1 "Register Names" specifies that:

"asr_reg.  An asr_reg is an Ancillary State Register name.  It may have
 one of the following values:

  %asr16-%asr31"

The rationale of having this restriction was that the registers from 16
to 31 are reserved to implementations, and are therefore "non-V9".  It
also assumes that the existing ASR registers in the range 0..31 will
have their own names such as %y, that can be used to access such
registers.

However, this is problematic.  When a new ASR register is introduced,
such as %mcdper a.k.a. %asr14, it is useful to be able to use %asr14 in
order to not depend on the latest version of the assembler.

The Solaris assembler is lax and allows to assembly instructions
referring to %asr0 to %asr31.  This patch makes the GNU assembler to
mimic that behavior.

gas/ChangeLog:

  2016-03-24  Jose E. Marchesi  <jose.marchesi@oracle.com>

* config/tc-sparc.c (sparc_ip): Remove the V9 restriction on ASR
registers to be in the 16..31 range.
gas/ChangeLog
gas/config/tc-sparc.c