This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] MIPS16/opcodes: Use hexadecimal interpretation for the `e' operand code


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=f17ecb4baca990b57cc57e8337c4e03ecee02742

commit f17ecb4baca990b57cc57e8337c4e03ecee02742
Author: Maciej W. Rozycki <macro@imgtec.com>
Date:   Fri Dec 9 22:50:07 2016 +0000

    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.

Diff:
---
 gas/ChangeLog                          |  6 ++++++
 gas/testsuite/gas/mips/mips.exp        |  1 +
 gas/testsuite/gas/mips/mips16-extend.d | 16 ++++++++++++++++
 gas/testsuite/gas/mips/mips16-extend.s | 23 +++++++++++++++++++++++
 opcodes/ChangeLog                      |  5 +++++
 opcodes/mips16-opc.c                   |  2 +-
 6 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index f05bcd4..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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]