mirror of https://github.com/xqemu/xqemu.git
i386: hvf: Don't miss 16-bit displacement
In 16-bit addressing mode, when Mod = 0 and R/M = 6, decoded displacement doesn't reach decode_linear_addr and gets lost. Instructions that involve the combination of ModRM always get a pointer with zero offset from the beginning of DS segment. The change fixes drawing in F-BIRD from day 1 of '18 advent calendar. Signed-off-by: Roman Bolshakov <r.bolshakov@yadro.com> Message-Id: <20190125154743.14498-1-r.bolshakov@yadro.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
dce5874fc7
commit
1edead0f72
|
@ -1642,7 +1642,7 @@ void calc_modrm_operand16(CPUX86State *env, struct x86_decode *decode,
|
||||||
X86Seg seg = R_DS;
|
X86Seg seg = R_DS;
|
||||||
|
|
||||||
if (!decode->modrm.mod && 6 == decode->modrm.rm) {
|
if (!decode->modrm.mod && 6 == decode->modrm.rm) {
|
||||||
op->ptr = (uint16_t)decode->displacement;
|
ptr = decode->displacement;
|
||||||
goto calc_addr;
|
goto calc_addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue