diff options
-rw-r--r-- | gas/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips.exp | 1 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips16-extend.d | 16 | ||||
-rw-r--r-- | gas/testsuite/gas/mips/mips16-extend.s | 23 | ||||
-rw-r--r-- | opcodes/ChangeLog | 5 | ||||
-rw-r--r-- | opcodes/mips16-opc.c | 2 |
6 files changed, 52 insertions, 1 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index f05bcd4d..fd394ea 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,9 @@ +2016-12-09 Maciej W. Rozycki <macro@imgtec.com> + + * testsuite/gas/mips/mips16-extend.d: New test. + * testsuite/gas/mips/mips16-extend.s: New test source. + * testsuite/gas/mips/mips.exp: Run the new test. + 2016-12-08 Maciej W. Rozycki <macro@imgtec.com> * config/tc-arc.c (arc_show_cpu_list): Rename `spaces' local diff --git a/gas/testsuite/gas/mips/mips.exp b/gas/testsuite/gas/mips/mips.exp index e911e1e..38c57f4 100644 --- a/gas/testsuite/gas/mips/mips.exp +++ b/gas/testsuite/gas/mips/mips.exp @@ -1295,6 +1295,7 @@ if { [istarget mips*-*-vxworks*] } { run_dump_test "mips16e-64" run_list_test "mips16e-64" "-march=mips32 -32" run_dump_test "mips16-intermix" + run_dump_test "mips16-extend" run_dump_test "vxworks1" run_dump_test "vxworks1-xgot" diff --git a/gas/testsuite/gas/mips/mips16-extend.d b/gas/testsuite/gas/mips/mips16-extend.d new file mode 100644 index 0000000..eec0b19 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-extend.d @@ -0,0 +1,16 @@ +#objdump: -d --prefix-addresses --show-raw-insn +#name: MIPS16 explicit EXTEND encoding +#as: -32 + +.*: +file format .*mips.* + +Disassembly of section \.text: +[0-9a-f]+ <[^>]*> f000 0000 addiu s0,sp,0 +[0-9a-f]+ <[^>]*> f001 0000 addiu s0,sp,2048 +[0-9a-f]+ <[^>]*> f5a5 0000 addiu s0,sp,11680 +[0-9a-f]+ <[^>]*> f7ff 0000 addiu s0,sp,-32 +[0-9a-f]+ <[^>]*> f123 0000 addiu s0,sp,6432 +[0-9a-f]+ <[^>]*> f432 0000 addiu s0,sp,-27616 +[0-9a-f]+ <[^>]*> f789 0000 addiu s0,sp,20352 +[0-9a-f]+ <[^>]*> f7ff 0000 addiu s0,sp,-32 + \.\.\. diff --git a/gas/testsuite/gas/mips/mips16-extend.s b/gas/testsuite/gas/mips/mips16-extend.s new file mode 100644 index 0000000..2f779c1 --- /dev/null +++ b/gas/testsuite/gas/mips/mips16-extend.s @@ -0,0 +1,23 @@ + .set mips16 + .set noreorder +foo: + extend 0 + addiu $16, $29, 0 + extend 1 + addiu $16, $29, 0 + extend 1445 + addiu $16, $29, 0 + extend 2047 + addiu $16, $29, 0 + extend 0x123 + addiu $16, $29, 0 + extend 0x432 + addiu $16, $29, 0 + extend 0x789 + addiu $16, $29, 0 + extend 0x7ff + addiu $16, $29, 0 + +# Force some (non-delay-slot) zero bytes, to make 'objdump' print ... + .align 4, 0 + .space 16 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 0d0e186..8017b0f 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,5 +1,10 @@ 2016-12-09 Maciej W. Rozycki <macro@imgtec.com> + * mips16-opc.c (decode_mips16_operand) <'e'>: Use HINT rather + than UINT. + +2016-12-09 Maciej W. Rozycki <macro@imgtec.com> + * mips-dis.c (print_insn_mips16): Use a tab rather than a space to separate `extend' and its uninterpreted argument output. Separate hexadecimal halves of undecoded extended instructions diff --git a/opcodes/mips16-opc.c b/opcodes/mips16-opc.c index 9337e5d..2b0e942 100644 --- a/opcodes/mips16-opc.c +++ b/opcodes/mips16-opc.c @@ -61,7 +61,7 @@ decode_mips16_operand (char type, bfd_boolean extended_p) case 'Z': MAPPED_REG (3, 0, GP, reg_m16_map); case 'a': JUMP (26, 0, 2); - case 'e': UINT (11, 0); + case 'e': HINT (11, 0); case 'i': JALX (26, 0, 2); case 'l': SPECIAL (6, 5, ENTRY_EXIT_LIST); case 'm': SPECIAL (7, 0, SAVE_RESTORE_LIST); |