Changeset 47413 in vbox for trunk/src/VBox/VMM/VMMAll
- Timestamp:
- Jul 25, 2013 10:04:31 PM (12 years ago)
- Location:
- trunk/src/VBox/VMM/VMMAll
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/IEMAll.cpp
r47411 r47413 103 103 #include <VBox/err.h> 104 104 #include <VBox/param.h> 105 #include <VBox/dis.h> 106 #include <VBox/disopcode.h> 105 107 #include <iprt/assert.h> 106 108 #include <iprt/string.h> 107 109 #include <iprt/x86.h> 110 108 111 109 112 … … 7775 7778 if (pIemCpu->fPrefixes & IEM_OP_PRF_LOCK) \ 7776 7779 return IEMOP_RAISE_INVALID_LOCK_PREFIX(); \ 7780 } while (0) 7781 #define IEMOP_HLP_DECODED_NL_1(a_uDisOpNo, a_fIemOpFlags, a_uDisParam0, a_fDisOpType) \ 7782 do \ 7783 { \ 7784 if (pIemCpu->fPrefixes & IEM_OP_PRF_LOCK) \ 7785 { \ 7786 NOREF(a_uDisOpNo); NOREF(a_fIemOpFlags); NOREF(a_uDisParam0); NOREF(a_fDisOpType); \ 7787 return IEMOP_RAISE_INVALID_LOCK_PREFIX(); \ 7788 } \ 7789 } while (0) 7790 #define IEMOP_HLP_DECODED_NL_2(a_uDisOpNo, a_fIemOpFlags, a_uDisParam0, a_uDisParam1, a_fDisOpType) \ 7791 do \ 7792 { \ 7793 if (pIemCpu->fPrefixes & IEM_OP_PRF_LOCK) \ 7794 { \ 7795 NOREF(a_uDisOpNo); NOREF(a_fIemOpFlags); NOREF(a_uDisParam0); NOREF(a_uDisParam1); NOREF(a_fDisOpType); \ 7796 return IEMOP_RAISE_INVALID_LOCK_PREFIX(); \ 7797 } \ 7777 7798 } while (0) 7778 7799 -
trunk/src/VBox/VMM/VMMAll/IEMAllInstructions.cpp.h
r47411 r47413 545 545 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 546 546 { 547 IEMOP_HLP_D ONE_DECODING_NO_LOCK_PREFIX();547 IEMOP_HLP_DECODED_NL_1(OP_SLDT, IEMOPFORM_M_REG, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 548 548 switch (pIemCpu->enmEffOpSize) 549 549 { … … 584 584 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 585 585 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); 586 IEMOP_HLP_D ONE_DECODING_NO_LOCK_PREFIX();586 IEMOP_HLP_DECODED_NL_1(OP_SLDT, IEMOPFORM_M_MEM, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 587 587 IEM_MC_FETCH_LDTR_U16(u16Ldtr); 588 588 IEM_MC_STORE_MEM_U16(pIemCpu->iEffSeg, GCPtrEffDst, u16Ldtr); … … 602 602 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 603 603 { 604 IEMOP_HLP_D ONE_DECODING_NO_LOCK_PREFIX();604 IEMOP_HLP_DECODED_NL_1(OP_STR, IEMOPFORM_M_REG, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 605 605 switch (pIemCpu->enmEffOpSize) 606 606 { … … 641 641 IEM_MC_LOCAL(RTGCPTR, GCPtrEffDst); 642 642 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffDst, bRm, 0); 643 IEMOP_HLP_D ONE_DECODING_NO_LOCK_PREFIX();643 IEMOP_HLP_DECODED_NL_1(OP_STR, IEMOPFORM_M_MEM, OP_PARM_Ew, DISOPTYPE_DANGEROUS | DISOPTYPE_PRIVILEGED_NOTRAP); 644 644 IEM_MC_FETCH_TR_U16(u16Tr); 645 645 IEM_MC_STORE_MEM_U16(pIemCpu->iEffSeg, GCPtrEffDst, u16Tr); … … 659 659 if ((bRm & X86_MODRM_MOD_MASK) == (3 << X86_MODRM_MOD_SHIFT)) 660 660 { 661 IEMOP_HLP_D ONE_DECODING_NO_LOCK_PREFIX();661 IEMOP_HLP_DECODED_NL_1(OP_LLDT, IEMOPFORM_M_REG, OP_PARM_Ew, DISOPTYPE_DANGEROUS); 662 662 IEM_MC_BEGIN(1, 0); 663 663 IEM_MC_ARG(uint16_t, u16Sel, 0); … … 673 673 IEM_MC_RAISE_GP0_IF_CPL_NOT_ZERO(); 674 674 IEM_MC_CALC_RM_EFF_ADDR(GCPtrEffSrc, bRm, 0); 675 IEMOP_HLP_D ONE_DECODING_NO_LOCK_PREFIX();675 IEMOP_HLP_DECODED_NL_1(OP_LLDT, IEMOPFORM_M_MEM, OP_PARM_Ew, DISOPTYPE_DANGEROUS); 676 676 IEM_MC_FETCH_MEM_U16(u16Sel, pIemCpu->iEffSeg, GCPtrEffSrc); 677 677 IEM_MC_CALL_CIMPL_1(iemCImpl_lldt, u16Sel); … … 6311 6311 { 6312 6312 case IEM_OP_PRF_SIZE_OP: /* SSE */ 6313 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6313 IEMOP_MNEMONIC("pmovmskb Gd,Nq"); 6314 IEMOP_HLP_DECODED_NL_2(OP_PMOVMSKB, IEMOPFORM_RM_REG, OP_PARM_Gd, OP_PARM_Vdq, DISOPTYPE_SSE | DISOPTYPE_HARMLESS); 6314 6315 IEM_MC_BEGIN(2, 0); 6315 6316 IEM_MC_ARG(uint64_t *, pDst, 0); … … 6324 6325 6325 6326 case 0: /* MMX */ 6326 IEMOP_HLP_DONE_DECODING_NO_LOCK_PREFIX(); 6327 IEMOP_MNEMONIC("pmovmskb Gd,Udq"); 6328 IEMOP_HLP_DECODED_NL_2(OP_PMOVMSKB, IEMOPFORM_RM_REG, OP_PARM_Gd, OP_PARM_Vdq, DISOPTYPE_MMX | DISOPTYPE_HARMLESS); 6327 6329 IEM_MC_BEGIN(2, 0); 6328 6330 IEM_MC_ARG(uint64_t *, pDst, 0);
Note:
See TracChangeset
for help on using the changeset viewer.