diff options
author | Richard Sandiford <rsandifo@nildram.co.uk> | 2013-07-07 09:50:42 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@nildram.co.uk> | 2013-07-07 09:50:42 +0000 |
commit | 82477f12b5829e2e8584d531312ef0883518707d (patch) | |
tree | 389b09f6152d7454b8e7297afb82127d9902f3dd /gas/config | |
parent | bacce3bf0fb3fce50cdcd387bbc34fe9b78c471b (diff) | |
download | binutils-redhat-82477f12b5829e2e8584d531312ef0883518707d.tar.gz |
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')
-rw-r--r-- | gas/config/tc-mips.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gas/config/tc-mips.c b/gas/config/tc-mips.c index f9cf758fc1..9d058afb89 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; |