summaryrefslogtreecommitdiff
path: root/opcodes/mips-dis.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2008-06-12 16:14:52 +0000
committerNick Clifton <nickc@redhat.com>2008-06-12 16:14:52 +0000
commitae1eda3cb37aca4d950214c31fb0d49ef185d14d (patch)
treef6124adf40eaf390ce020067acdb7c0e371fbe53 /opcodes/mips-dis.c
parentdd87bbaeeffd76889b065ee860b88d7120bbdae8 (diff)
downloadbinutils-redhat-ae1eda3cb37aca4d950214c31fb0d49ef185d14d.tar.gz
include/opcode/
* mips.h: Document new field descriptors +x, +X, +p, +P, +s, +S. Update comment before MIPS16 field descriptors to mention MIPS16. (OP_SH_BBITIND, OP_MASK_BBITIND): New bit mask and shift count for BBIT. (OP_SH_CINSPOS, OP_MASK_CINSPOS, OP_SH_CINSLM1, OP_MASK_CINSLM1): New bit masks and shift counts for cins and exts. gas/ * config/tc-mips.c (validate_mips_insn): Handle field descriptors +x, +X, +p, +P, +s, +S. (mips_ip): Likewise. opcodes/ * mips-dis.c (print_insn_args): Handle field descriptors +x, +p, +s, +S. * mips-opc.c (mips_builtin_opcodes): Add Octeon instructions baddu, bbit*, cins*, dmul, pop, dpop, exts*, mtm*, mtp*, syncs, syncw, syncws, vm3mulu, vm0 and vmulu. gas/testsuite/ * gas/mips/octeon.s, gas/mips/octeon.d: Add tests for baddu, bbit*, cins*, dmul, pop, dpop, exts*, mtm*, mtp*, syncs, syncw, syncws, vm3mulu, vm0 and vmulu. * gas/mips/octeon-ill.s, gas/mips/octeon-ill.s: New test. * gas/mips/mips.exp: Run it. Run octeon test with run_dump_test_arches.
Diffstat (limited to 'opcodes/mips-dis.c')
-rw-r--r--opcodes/mips-dis.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/opcodes/mips-dis.c b/opcodes/mips-dis.c
index a03078a4d3..4202b7d1db 100644
--- a/opcodes/mips-dis.c
+++ b/opcodes/mips-dis.c
@@ -882,6 +882,26 @@ print_insn_args (const char *d,
break;
}
+ case 'x': /* bbit bit index */
+ (*info->fprintf_func) (info->stream, "0x%lx",
+ (l >> OP_SH_BBITIND) & OP_MASK_BBITIND);
+ break;
+
+ case 'p': /* cins, cins32, exts and exts32 position */
+ (*info->fprintf_func) (info->stream, "0x%lx",
+ (l >> OP_SH_CINSPOS) & OP_MASK_CINSPOS);
+ break;
+
+ case 's': /* cins and exts length-minus-one */
+ (*info->fprintf_func) (info->stream, "0x%lx",
+ (l >> OP_SH_CINSLM1) & OP_MASK_CINSLM1);
+ break;
+
+ case 'S': /* cins32 and exts32 length-minus-one field */
+ (*info->fprintf_func) (info->stream, "0x%lx",
+ (l >> OP_SH_CINSLM1) & OP_MASK_CINSLM1);
+ break;
+
default:
/* xgettext:c-format */
(*info->fprintf_func) (info->stream,