diff options
Diffstat (limited to 'opcodes/s390-dis.c')
-rw-r--r-- | opcodes/s390-dis.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/opcodes/s390-dis.c b/opcodes/s390-dis.c index 8d450b4..16bb5ff 100644 --- a/opcodes/s390-dis.c +++ b/opcodes/s390-dis.c @@ -206,11 +206,20 @@ s390_print_insn_with_opcode (bfd_vma memaddr, /* For instructions with a last optional operand don't print it if zero. */ - if ((opcode->flags & S390_INSTR_FLAG_OPTPARM) + if ((opcode->flags & (S390_INSTR_FLAG_OPTPARM | S390_INSTR_FLAG_OPTPARM2)) && val.u == 0 && opindex[1] == 0) break; + if ((opcode->flags & S390_INSTR_FLAG_OPTPARM2) + && val.u == 0 && opindex[1] != 0 && opindex[2] == 0) + { + union operand_value next_op_val = + s390_extract_operand (buffer, s390_operands + opindex[1]); + if (next_op_val.u == 0) + break; + } + if (flags & S390_OPERAND_GPR) info->fprintf_func (info->stream, "%c%%r%u", separator, val.u); else if (flags & S390_OPERAND_FPR) |