Skip to content

Commit

Permalink
target/i386: adjust decoding of J operand
Browse files Browse the repository at this point in the history
gen_jcc() has been changed to accept a relative offset since the
new decoder was written.  Adjust the J operand, which is meant
to be used with jump instructions such as gen_jcc(), to not
include the program counter and to not truncate the result, as
both operations are now performed by common code.

The result is that J is now the same as the I operand.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
bonzini committed Dec 29, 2023
1 parent d4f6117 commit 4b2baf4
Showing 1 changed file with 0 additions and 10 deletions.
10 changes: 0 additions & 10 deletions target/i386/tcg/decode-new.c.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1329,19 +1329,9 @@ static bool decode_op(DisasContext *s, CPUX86State *env, X86DecodedInsn *decode,
}

case X86_TYPE_I: /* Immediate */
op->unit = X86_OP_IMM;
decode->immediate = insn_get_signed(env, s, op->ot);
break;

case X86_TYPE_J: /* Relative offset for a jump */
op->unit = X86_OP_IMM;
decode->immediate = insn_get_signed(env, s, op->ot);
decode->immediate += s->pc - s->cs_base;
if (s->dflag == MO_16) {
decode->immediate &= 0xffff;
} else if (!CODE64(s)) {
decode->immediate &= 0xffffffffu;
}
break;

case X86_TYPE_L: /* The upper 4 bits of the immediate select a 128-bit register */
Expand Down

0 comments on commit 4b2baf4

Please sign in to comment.