summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2013-08-17 14:36:32 +0000
committerandrew <andrew@FreeBSD.org>2013-08-17 14:36:32 +0000
commit42756943488e84826b46c8d6a277d40b495c3b74 (patch)
treeb283f4629c32b6a756ef45bbeb59dc5dd669ccf6
parent8919b4e85256477932bd822f980beb5843d4626b (diff)
downloadFreeBSD-src-42756943488e84826b46c8d6a277d40b495c3b74.zip
FreeBSD-src-42756943488e84826b46c8d6a277d40b495c3b74.tar.gz
Silence a warning that is incorrect on ARMv6 and later. In the smull, umull,
smlal, and umlal the output registers are allowed to be the same as either input registers, where in ARMv4 and ARMv5 they could only be the same as the last input register.
-rw-r--r--contrib/binutils/gas/config/tc-arm.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/contrib/binutils/gas/config/tc-arm.c b/contrib/binutils/gas/config/tc-arm.c
index b41ce60..e1a6c6d 100644
--- a/contrib/binutils/gas/config/tc-arm.c
+++ b/contrib/binutils/gas/config/tc-arm.c
@@ -7218,10 +7218,11 @@ do_mull (void)
inst.instruction |= inst.operands[2].reg;
inst.instruction |= inst.operands[3].reg << 8;
- /* rdhi, rdlo and rm must all be different. */
+ /* rdhi, rdlo and rm must all be different prior to ARMv6. */
if (inst.operands[0].reg == inst.operands[1].reg
- || inst.operands[0].reg == inst.operands[2].reg
+ || ((inst.operands[0].reg == inst.operands[2].reg
|| inst.operands[1].reg == inst.operands[2].reg)
+ && !ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_v6)))
as_tsktsk (_("rdhi, rdlo and rm must all be different"));
}
OpenPOWER on IntegriCloud