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;
|
||||
|
||||
if (!decode->modrm.mod && 6 == decode->modrm.rm) {
|
||||
op->ptr = (uint16_t)decode->displacement;
|
||||
ptr = decode->displacement;
|
||||
goto calc_addr;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user