+2009-02-23 Mark Mitchell <mark@codesourcery.com>
+
+ * config/tc-arm.c (warn_deprecated_sp): New macro.
+ (do_t_mov_cmp): Permit R13 as the second
+ argument to "cmp.n".
+
2009-02-23 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (type_names): Add OPERAND_TYPE_REGYMM.
} \
while (0)
+/* If REG is R13 (the stack pointer), warn that its use is
+ deprecated. */
+#define warn_deprecated_sp(reg) \
+ do \
+ if (warn_on_deprecated && reg == REG_SP) \
+ as_warn (_("use of r13 is deprecated")); \
+ while (0)
+
/* Functions for operand encoding. ARM, then Thumb. */
#define rotate_left(v, n) (v << n | v >> (32 - n))
if (opcode == T_MNEM_cmp)
{
constraint (Rn == REG_PC, BAD_PC);
- reject_bad_reg (Rm);
+ if (narrow)
+ {
+ /* In the Thumb-2 ISA, use of R13 as Rm is deprecated,
+ but valid. */
+ warn_deprecated_sp (Rm);
+ /* R15 was documented as a valid choice for Rm in ARMv6,
+ but as UNPREDICTABLE in ARMv7. ARM's proprietary
+ tools reject R15, so we do too. */
+ constraint (Rm == REG_PC, BAD_PC);
+ }
+ else
+ reject_bad_reg (Rm);
}
else if (opcode == T_MNEM_mov
|| opcode == T_MNEM_movs)
+2009-02-23 Mark Mitchell <mark@codesourcery.com>
+
+ * gas/arm/thumb2_bad_reg.s: Update to allow R13 as second argument
+ for CMP.
+ * gas/arm/thumb2_bad_reg.l: Adjust accordingly.
+
2009-02-19 Peter Bergner <bergner@vnet.ibm.com>
* gas/ppc/e500mc.d ("lfdepx", "stfdepx"): Fix tests to expect a
[^:]*:[0-9]+: Error: r15 not allowed here -- `cmn.w r0,r15'
[^:]*:[0-9]+: Error: r15 not allowed here -- `cmp.w r15,#1'
[^:]*:[0-9]+: Error: r15 not allowed here -- `cmp r15,r0'
+[^:]*:[0-9]+: Warning: use of r13 is deprecated
+[^:]*:[0-9]+: Error: r15 not allowed here -- `cmp r0,r15'
+[^:]*:[0-9]+: Warning: use of r13 is deprecated
+[^:]*:[0-9]+: Error: r15 not allowed here -- `cmp.n r0,r15'
[^:]*:[0-9]+: Error: r15 not allowed here -- `cmp.w r15,r0'
[^:]*:[0-9]+: Error: r13 not allowed here -- `cmp.w r0,r13'
[^:]*:[0-9]+: Error: r15 not allowed here -- `cmp.w r0,r15'
@ CMP (register)
cmp r13, r0 @ OK
cmp r15, r0
+ cmp r0, r13 @ Deprecated
+ cmp r0, r15
+ cmp.n r0, r13 @ Deprecated
+ cmp.n r0, r15
cmp.w r13, r0 @ OK
cmp.w r15, r0
cmp.w r0, r13