forked from Imagelibrary/binutils-gdb
* cr16-dis.c (match_opcode): Truncate mcode to 32 bit and
adjusted the mask for 32-bit branch instruction.
This commit is contained in:
@@ -322,7 +322,7 @@ match_opcode (void)
|
||||
{
|
||||
unsigned long mask;
|
||||
/* The instruction 'constant' opcode doewsn't exceed 32 bits. */
|
||||
unsigned long doubleWord = words[1] + (words[0] << 16);
|
||||
unsigned long doubleWord = (words[1] + (words[0] << 16)) & 0xffffffff;
|
||||
|
||||
/* Start searching from end of instruction table. */
|
||||
instruction = &cr16_instruction[NUMOPCODES - 2];
|
||||
@@ -331,6 +331,10 @@ match_opcode (void)
|
||||
while (instruction >= cr16_instruction)
|
||||
{
|
||||
mask = build_mask ();
|
||||
/* Adjust mask for bcond with 32-bit size instruction */
|
||||
if ((IS_INSN_MNEMONIC("b") && instruction->size == 2))
|
||||
mask = 0xff0f0000;
|
||||
|
||||
if ((doubleWord & mask) == BIN (instruction->match,
|
||||
instruction->match_bits))
|
||||
return 1;
|
||||
|
||||
Reference in New Issue
Block a user