aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/testsuite/gas/mips/mips.exp1
-rw-r--r--gas/testsuite/gas/mips/mips16-extend.d16
-rw-r--r--gas/testsuite/gas/mips/mips16-extend.s23
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/mips16-opc.c2
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);