aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-mips.c
diff options
context:
space:
mode:
authorRichard Sandiford <rdsandiford@googlemail.com>2013-07-07 09:50:43 +0000
committerRichard Sandiford <rdsandiford@googlemail.com>2013-07-07 09:50:43 +0000
commit27c5c572c911ec2f77bab953586870919db15a29 (patch)
tree3707c6f2cb9bb03b201d4ad70e28086b9830726b /gas/config/tc-mips.c
parente76ff5abe375e1e7535f7827db01bce70bc9710d (diff)
downloadgdb-27c5c572c911ec2f77bab953586870919db15a29.zip
gdb-27c5c572c911ec2f77bab953586870919db15a29.tar.gz
gdb-27c5c572c911ec2f77bab953586870919db15a29.tar.bz2
include/opcode/
* mips.h: Document "+i". opcodes/ * mips-opc.c (mips_builtin_opcodes): Use "+i" rather than "a" for "jalx". * mips16-opc.c (mips16_opcodes): Likewise. * micromips-opc.c (micromips_opcodes): Likewise. * mips-dis.c (print_insn_args, print_mips16_insn_arg) (print_insn_mips16): Handle "+i". (print_insn_micromips): Likewise. Conditionally preserve the ISA bit for "a" but not for "+i". gas/ * config/tc-mips.c (validate_mips_insn, validate_micromips_insn): (mips_ip, mips16_ip): Handle "+i".
Diffstat (limited to 'gas/config/tc-mips.c')
-rw-r--r--gas/config/tc-mips.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c
index f9cf758..9d058af 100644
--- a/gas/config/tc-mips.c
+++ b/gas/config/tc-mips.c
@@ -10910,6 +10910,7 @@ validate_mips_insn (const struct mips_opcode *opc)
case 'a': USE_BITS (OP_MASK_OFFSET_A, OP_SH_OFFSET_A); break;
case 'b': USE_BITS (OP_MASK_OFFSET_B, OP_SH_OFFSET_B); break;
case 'c': USE_BITS (OP_MASK_OFFSET_C, OP_SH_OFFSET_C); break;
+ case 'i': USE_BITS (OP_MASK_TARGET, OP_SH_TARGET); break;
case 'j': USE_BITS (OP_MASK_EVAOFFSET, OP_SH_EVAOFFSET); break;
default:
@@ -11071,6 +11072,7 @@ validate_micromips_insn (const struct mips_opcode *opc)
case 'F': USE_BITS (INSMSB); break;
case 'G': USE_BITS (EXTMSBD); break;
case 'H': USE_BITS (EXTMSBD); break;
+ case 'i': USE_BITS (TARGET); break;
case 'j': USE_BITS (EVAOFFSET); break;
default:
as_bad (_("Internal error: bad mips opcode "
@@ -12173,6 +12175,9 @@ mips_ip (char *str, struct mips_cl_insn *ip)
INSERT_OPERAND (0, FZ, *ip, regno);
continue;
+ case 'i':
+ goto jump;
+
case 'j':
{
int shift = 8;
@@ -13031,6 +13036,7 @@ mips_ip (char *str, struct mips_cl_insn *ip)
continue;
case 'a': /* 26-bit address. */
+ jump:
*offset_reloc = BFD_RELOC_MIPS_JMP;
my_getExpression (&offset_expr, s);
s = expr_end;
@@ -14280,6 +14286,7 @@ mips16_ip (char *str, struct mips_cl_insn *ip)
continue;
case 'a': /* 26 bit address */
+ case 'i':
my_getExpression (&offset_expr, s);
s = expr_end;
*offset_reloc = BFD_RELOC_MIPS16_JMP;