aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Darrington <john@darrington.wattle.id.au>2019-04-24 09:41:23 +0200
committerJohn Darrington <john@darrington.wattle.id.au>2019-04-24 10:33:52 +0200
commita679f24ecc00ff7df02c5e6e4804fc9f19cbe595 (patch)
tree314b7c379d23089a2c691088d72cf66ab2d4b281
parentd10be0cb9e61f29a0de368ebcc78bba22a902ad5 (diff)
downloadgdb-a679f24ecc00ff7df02c5e6e4804fc9f19cbe595.zip
gdb-a679f24ecc00ff7df02c5e6e4804fc9f19cbe595.tar.gz
gdb-a679f24ecc00ff7df02c5e6e4804fc9f19cbe595.tar.bz2
S12Z: Opcodes: Handle bit map operations with non-canonical operands.
opcodes/ * s12z-opc.c (bm_decode): Handle the RESERVERD0 case. gas/ * testsuite/gas/s12z/bit-manip-invalid.d: Extend the test. * testsuite/gas/s12z/bit-manip-invalid.s: Extend the test.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/testsuite/gas/s12z/bit-manip-invalid.d6
-rw-r--r--gas/testsuite/gas/s12z/bit-manip-invalid.s4
-rw-r--r--opcodes/ChangeLog5
-rw-r--r--opcodes/s12z-opc.c4
5 files changed, 21 insertions, 4 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index d49ec4d..090df4b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2019-04-24 John Darrington <john@darrington.wattle.id.au>
+
+ * testsuite/gas/s12z/bit-manip-invalid.s: Extend test for BSET
+ and BCLR instructions with an invalid mode.
+ * testsuite/gas/s12z/bit-manip-invalid.d: ditto.
+
2019-04-19 Nick Clifton <nickc@redhat.com>
PR 24464
diff --git a/gas/testsuite/gas/s12z/bit-manip-invalid.d b/gas/testsuite/gas/s12z/bit-manip-invalid.d
index 571f435..d16a8f5 100644
--- a/gas/testsuite/gas/s12z/bit-manip-invalid.d
+++ b/gas/testsuite/gas/s12z/bit-manip-invalid.d
@@ -1,5 +1,5 @@
#objdump: -d
-#name: Test of disassembler behaviour by with invalid bit manipulation instructions
+#name: Test of disassembler behaviour with invalid bit manipulation instructions
#source: bit-manip-invalid.s
@@ -17,3 +17,7 @@ Disassembly of section \.text:
8: 03 65 12 brset d1, #4, \*\+18
b: 01 nop
c: 01 nop
+ d: ec 44 bclr d0, #0
+ f: ec 7c bclr d0, #7
+ 11: ed 5d bset d1, #3
+ 13: ed 7d bset d1, #7
diff --git a/gas/testsuite/gas/s12z/bit-manip-invalid.s b/gas/testsuite/gas/s12z/bit-manip-invalid.s
index 6876ba8..d0269953 100644
--- a/gas/testsuite/gas/s12z/bit-manip-invalid.s
+++ b/gas/testsuite/gas/s12z/bit-manip-invalid.s
@@ -8,4 +8,8 @@
nop
DC.L 0x03651201
nop
+ dc.w 0xEC44
+ dc.w 0xEC7C
+ dc.w 0xED5D
+ dc.w 0xED7D
diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog
index b4f85d3..2d0229c 100644
--- a/opcodes/ChangeLog
+++ b/opcodes/ChangeLog
@@ -3,6 +3,11 @@
* s12z-opc.h: Add extern "C" bracketing to help
users who wish to use this interface in c++ code.
+2019-04-24 John Darrington <john@darrington.wattle.id.au>
+
+ * s12z-opc.c (bm_decode): Handle bit map operations with the
+ "reserved0" mode.
+
2019-04-15 Thomas Preud'homme <thomas.preudhomme@arm.com>
* arm-dis.c (coprocessor_opcodes): Document new %J and %K format
diff --git a/opcodes/s12z-opc.c b/opcodes/s12z-opc.c
index 1f02f5d..e40f90e 100644
--- a/opcodes/s12z-opc.c
+++ b/opcodes/s12z-opc.c
@@ -1821,6 +1821,7 @@ bm_decode (struct mem_read_abstraction_base *mra,
switch (mode)
{
case BM_REG_IMM:
+ case BM_RESERVED0:
imm = (bm & 0x38) >> 3;
operand[(*n_operands)++] = create_immediate_operand (imm);
break;
@@ -1838,9 +1839,6 @@ bm_decode (struct mem_read_abstraction_base *mra,
case BM_RESERVED1:
operand[(*n_operands)++] = create_register_operand ((bm & 0x70) >> 4);
break;
- case BM_RESERVED0:
- assert (0);
- break;
}
}