mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
target/s390x: Fix translator_fake_ld length
The ilen value extracted from ex_value is the length of the EXECUTE instruction itself, and so is the increment to the pc. However, the length of the synthetic insn is located in the opcode like all other instructions. Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
4c6163eaf2
commit
171ce93981
1 changed files with 2 additions and 2 deletions
|
@ -6200,11 +6200,11 @@ static const DisasInsn *extract_insn(CPUS390XState *env, DisasContext *s)
|
|||
/* Extract the values saved by EXECUTE. */
|
||||
insn = s->ex_value & 0xffffffffffff0000ull;
|
||||
ilen = s->ex_value & 0xf;
|
||||
op = insn >> 56;
|
||||
|
||||
/* Register insn bytes with translator so plugins work. */
|
||||
be_insn = cpu_to_be64(insn);
|
||||
translator_fake_ld(&s->base, &be_insn, ilen);
|
||||
op = insn >> 56;
|
||||
translator_fake_ld(&s->base, &be_insn, get_ilen(op));
|
||||
} else {
|
||||
insn = ld_code2(env, s, pc);
|
||||
op = (insn >> 8) & 0xff;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue