MIPS16/opcodes: Use hexadecimal interpretation for the `e' operand code

Make the `e' operand code used with raw EXTEND instructions use the
hexadecimal rather than decimal format, for consistency with what is
actually produced by code in `print_insn_mips16' dedicated to EXTEND
disassembly.  Due to that special handling the operand code is only
interpreted for assembly however, which accepts either format either
way, so there is no functional change here.

	opcodes/
	* mips16-opc.c (decode_mips16_operand) <'e'>: Use HINT rather
	than UINT.

	gas/
	* 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.
This commit is contained in:
Maciej W. Rozycki 2016-12-09 22:50:07 +00:00
parent 55af478400
commit f17ecb4bac
6 changed files with 52 additions and 1 deletions

View File

@ -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

View File

@ -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"

View File

@ -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
\.\.\.

View File

@ -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

View File

@ -1,3 +1,8 @@
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

View File

@ -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);