• R
    i386: hvf: Fix register refs if REX is present · b4e1af89
    Roman Bolshakov 提交于
    According to Intel(R)64 and IA-32 Architectures Software Developer's
    Manual, the following one-byte registers should be fetched when REX
    prefix is present (sorted by reg encoding index):
    AL, CL, DL, BL, SPL, BPL, SIL, DIL, R8L - R15L
    
    The first 8 are fetched if REX.R is zero, the last 8 if non-zero.
    
    The following registers should be fetched for instructions without REX
    prefix (also sorted by reg encoding index):
    AL, CL, DL, BL, AH, CH, DH, BH
    
    Current emulation code doesn't handle accesses to SPL, BPL, SIL, DIL
    when REX is present, thefore an instruction 40883e "mov %dil,(%rsi)" is
    decoded as "mov %bh,(%rsi)".
    
    That caused an infinite loop in vp_reset:
    https://lists.gnu.org/archive/html/qemu-devel/2018-10/msg03293.htmlSigned-off-by: NRoman Bolshakov <r.bolshakov@yadro.com>
    Message-Id: <20181018134401.44471-1-r.bolshakov@yadro.com>
    Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
    b4e1af89
x86_decode.c 83.8 KB