VirtualBox

Ignore:
Timestamp:
May 24, 2020 6:18:55 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
138194
Message:

IEM: Implemented dummy MOV to/from TR. Avoids crashes in OS/2 KDB and WDEB386 when emulating a 386.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/IEMAllInstructionsTwoByte0f.cpp.h

    r82968 r84477  
    22162216{
    22172217    IEMOP_MNEMONIC(mov_Rd_Td, "mov Rd,Td");
    2218     /** @todo works on 386 and 486. */
    2219     /* The RM byte is not considered, see testcase. */
    2220     return IEMOP_RAISE_INVALID_OPCODE();
     2218    IEMOP_HLP_MIN_386();
     2219    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     2220    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     2221    if (RT_LIKELY(IEM_GET_TARGET_CPU(pVCpu) >= IEMTARGETCPU_PENTIUM))
     2222        return IEMOP_RAISE_INVALID_OPCODE();
     2223    return IEM_MC_DEFER_TO_CIMPL_2(iemCImpl_mov_Rd_Td,
     2224                                   (X86_MODRM_RM_MASK & bRm) | pVCpu->iem.s.uRexB,
     2225                                   ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK));
    22212226}
    22222227
     
    22262231{
    22272232    IEMOP_MNEMONIC(mov_Td_Rd, "mov Td,Rd");
    2228     /** @todo works on 386 and 486. */
    2229     /* The RM byte is not considered, see testcase. */
    2230     return IEMOP_RAISE_INVALID_OPCODE();
     2233    IEMOP_HLP_MIN_386();
     2234    uint8_t bRm; IEM_OPCODE_GET_NEXT_U8(&bRm);
     2235    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     2236    if (RT_LIKELY(IEM_GET_TARGET_CPU(pVCpu) >= IEMTARGETCPU_PENTIUM))
     2237        return IEMOP_RAISE_INVALID_OPCODE();
     2238    return IEM_MC_DEFER_TO_CIMPL_2(iemCImpl_mov_Td_Rd,
     2239                                   ((bRm >> X86_MODRM_REG_SHIFT) & X86_MODRM_REG_SMASK),
     2240                                   (X86_MODRM_RM_MASK & bRm) | pVCpu->iem.s.uRexB);
    22312241}
    22322242
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette