VirtualBox

Ignore:
Timestamp:
Apr 3, 2017 3:21:56 PM (8 years ago)
Author:
vboxsync
Message:

IEM: Implemented ldmxcsr Md.

File:
1 edited

Legend:

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

    r66391 r66404  
    58255825}
    58265826
    5827 
    5828 /** Opcode 0x0f 0xae mem/2. */
    5829 FNIEMOP_STUB_1(iemOp_Grp15_ldmxcsr,  uint8_t, bRm);
     5827/**
     5828 * @opmaps      grp15
     5829 * @opcode      !11/2
     5830 * @oppfx       none
     5831 * @opcpuid     sse
     5832 * @opgroup     og_cachectl
     5833 * @optest      op1=0      -> mxcsr=0
     5834 * @optest      op1=0x2083 -> mxcsr=0x2083
     5835 * @optest      op1=0xfffffffe -> value.xcpt=0xd
     5836 * @optest      op1=0x2083 cr0|=ts -> value.xcpt=0x7
     5837 * @optest      op1=0x2083 cr0|=em -> value.xcpt=0x6
     5838 * @optest      op1=0x2083 cr0|=mp -> mxcsr=0x2083
     5839 * @optest      op1=0x2083 cr4&~=osfxsr -> value.xcpt=0x6
     5840 * @optest      op1=0x2083 cr0|=ts,em -> value.xcpt=0x6
     5841 * @optest      op1=0x2083 cr0|=em cr4&~=osfxsr -> value.xcpt=0x6
     5842 * @optest      op1=0x2083 cr0|=ts,em cr4&~=osfxsr -> value.xcpt=0x6
     5843 * @optest      op1=0x2083 cr0|=ts,em,mp cr4&~=osfxsr -> value.xcpt=0x6
     5844 * @oponlytest
     5845 */
     5846FNIEMOP_DEF_1(iemOp_Grp15_ldmxcsr,  uint8_t, bRm)
     5847{
     5848    IEMOP_MNEMONIC1(M_MEM, LDMXCSR, ldmxcsr, MdRO, DISOPTYPE_HARMLESS, IEMOPHINT_IGNORES_OP_SIZE);
     5849    if (!IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fSse)
     5850        return IEMOP_RAISE_INVALID_OPCODE();
     5851
     5852    IEM_MC_BEGIN(2, 0);
     5853    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
     5854    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
     5855    IEM_MC_CALC_RM_EFF_ADDR(GCPtrEff, bRm, 0);
     5856    IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX();
     5857    IEM_MC_ACTUALIZE_SSE_STATE_FOR_READ();
     5858    IEM_MC_ASSIGN(iEffSeg, pVCpu->iem.s.iEffSeg);
     5859    IEM_MC_CALL_CIMPL_2(iemCImpl_ldmxcsr, iEffSeg, GCPtrEff);
     5860    IEM_MC_END();
     5861    return VINF_SUCCESS;
     5862}
    58305863
    58315864
     
    58355868 * @oppfx       none
    58365869 * @opcpuid     sse
    5837  * @opgroup     og_cachectl
    5838  * @optest      mxcsr=0      -> op1=0
    5839  * @optest      mxcsr=0x2083 -> op1=0x2083
    5840  * @oponlytest
     5870 * @opgroup     og_sse_mxcsrsm
     5871 * @optest      mxcsr=0 op1=0x2083 -> mxcsr=0x2083
    58415872 */
    58425873FNIEMOP_DEF_1(iemOp_Grp15_stmxcsr,  uint8_t, bRm)
     
    58465877        return IEMOP_RAISE_INVALID_OPCODE();
    58475878
    5848     IEM_MC_BEGIN(2, 1);
     5879    IEM_MC_BEGIN(2, 0);
    58495880    IEM_MC_ARG(uint8_t,         iEffSeg,                                 0);
    58505881    IEM_MC_ARG(RTGCPTR,         GCPtrEff,                                1);
Note: See TracChangeset for help on using the changeset viewer.

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