summaryrefslogtreecommitdiff
path: root/opcodes/sh-dis.c
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@arc.com>2004-02-26 16:14:42 +0000
committerJoern Rennecke <joern.rennecke@arc.com>2004-02-26 16:14:42 +0000
commitd4a43bac050595a771afa3b7fafd3115d9603793 (patch)
tree020f0c650f7358d4771b54de9560fd7ef71bc07f /opcodes/sh-dis.c
parenta144d3c3908b81dd0a3e2746772b91c9f33ce032 (diff)
downloadbinutils-redhat-d4a43bac050595a771afa3b7fafd3115d9603793.tar.gz
2004-02-23 Andrew Stubbs <andrew.stubbs@superh.com>
gas: * tc-sh.c (build_Mytes): Add REG_N_D and REG_N_B01 nibble types to assembler. opcodes: * sh-dis.c (print_insn_sh): Add REG_N_D nibble type to ensure that double registers have even numbers. Add REG_N_B01 for nn01 (binary 01) nibble to ensure that reserved instruction 0xfffd does not decode the same as 0xfdfd (ftrv). * sh-opc.h: Add REG_N_D nibble type and use it whereever REG_N refers to a double register. Add REG_N_B01 nibble type and use it instead of REG_NM in ftrv. Adjust the bit patterns in a few comments.
Diffstat (limited to 'opcodes/sh-dis.c')
-rw-r--r--opcodes/sh-dis.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/opcodes/sh-dis.c b/opcodes/sh-dis.c
index 70fdffb48e..2512f966d3 100644
--- a/opcodes/sh-dis.c
+++ b/opcodes/sh-dis.c
@@ -577,12 +577,21 @@ print_insn_sh (memaddr, info)
case IMM1_8BY4:
imm = ((nibs[2] << 4) | nibs[3]) << 2;
goto ok;
+ case REG_N_D:
+ if ((nibs[n] & 1) != 0)
+ goto fail;
+ /* fall through */
case REG_N:
rn = nibs[n];
break;
case REG_M:
rm = nibs[n];
break;
+ case REG_N_B01:
+ if ((nibs[n] & 0x3) != 1 /* binary 01 */)
+ goto fail;
+ rn = (nibs[n] & 0xc) >> 2;
+ break;
case REG_NM:
rn = (nibs[n] & 0xc) >> 2;
rm = (nibs[n] & 0x3);