summaryrefslogtreecommitdiff
path: root/gas
diff options
context:
space:
mode:
authorChao-ying Fu <fu@mips.com>2013-09-12 21:41:08 +0000
committerChao-ying Fu <fu@mips.com>2013-09-12 21:41:08 +0000
commit655f6413b72679d09f04e7ee3a7811403746fed7 (patch)
tree4493253c13ec7779a030f9b31f6cac20580c1fe6 /gas
parenta5156841242b87e0763191cfd68c60522de4862a (diff)
downloadbinutils-redhat-655f6413b72679d09f04e7ee3a7811403746fed7.tar.gz
2013-09-12 Chao-ying Fu <Chao-ying.Fu@imgtec.com>
* config/tc-mips.c (match_insn): Set error when $31 is used for bltzal* and bgezal*.
Diffstat (limited to 'gas')
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-mips.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 89c9cc9b55..8434721a20 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-12 Chao-ying Fu <Chao-ying.Fu@imgtec.com>
+
+ * config/tc-mips.c (match_insn): Set error when $31 is used for
+ bltzal* and bgezal*.
+
2013-09-04 Tristan Gingold <gingold@adacore.com>
* config/tc-ppc.c (md_apply_fix): Handle defined after use toc
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index ca95922ef3..ff1c610d60 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -7091,6 +7091,10 @@ match_insn (struct mips_cl_insn *insn, const struct mips_opcode *opcode,
set_insn_error
(0, _("a destination register must be supplied"));
}
+ else if (arg.last_regno == 31
+ && (strncmp (insn->insn_mo->name, "bltzal", 6) == 0
+ || strncmp (insn->insn_mo->name, "bgezal", 6) == 0))
+ set_insn_error (0, _("the source register must not be $31"));
check_completed_insn (&arg);
return TRUE;
}