Changeset 97042 in vbox for trunk/src/VBox
- Timestamp:
- Oct 7, 2022 8:48:58 AM (2 years ago)
- svn:sync-xref-src-repo-rev:
- 153988
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/VBox/VMM/VMMAll/IEMAllCImplVmxInstr.cpp ¶
r97037 r97042 2860 2860 uint32_t const uInstrInfo = iemVmxGetExitInstrInfo(pVCpu, uExitReason, uInstrId, &GCPtrDisp); 2861 2861 2862 VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_INFO(uExitReason, GCPtrDisp, uInstrInfo, cbInstr);2862 VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_INFO(uExitReason, GCPtrDisp, uInstrInfo, cbInstr); 2863 2863 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 2864 2864 } … … 2875 2875 VBOXSTRICTRC iemVmxVmexitInstrInvlpg(PVMCPUCC pVCpu, RTGCPTR GCPtrPage, uint8_t cbInstr) RT_NOEXCEPT 2876 2876 { 2877 VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_LEN(VMX_EXIT_INVLPG, GCPtrPage, cbInstr);2877 VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_INVLPG, GCPtrPage, cbInstr); 2878 2878 Assert(IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fLongMode || !RT_HI_U32(ExitInfo.u64Qual)); 2879 2879 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); … … 2906 2906 bool const fMemOperand = RT_BOOL(GCPtrEffDst != NIL_RTGCPTR); 2907 2907 VMXVEXITINFO ExitInfo 2908 = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 2909 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 0) /* CR0 */ 2910 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_LMSW_OP, fMemOperand) 2911 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_LMSW_DATA, uNewMsw) 2912 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, 2913 VMX_EXIT_QUAL_CRX_ACCESS_LMSW), 2914 cbInstr); 2908 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 2909 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 0) /* CR0 */ 2910 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_LMSW_OP, fMemOperand) 2911 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_LMSW_DATA, uNewMsw) 2912 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_LMSW), 2913 cbInstr); 2915 2914 if (fMemOperand) 2916 2915 { … … 2964 2963 Log2(("clts: Guest intercept -> VM-exit\n")); 2965 2964 VMXVEXITINFO const ExitInfo 2966 = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,2967 2968 2969 2970 2965 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 2966 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 0) /* CR0 */ 2967 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, 2968 VMX_EXIT_QUAL_CRX_ACCESS_CLTS), 2969 cbInstr); 2971 2970 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 2972 2971 } … … 3008 3007 Log2(("mov_Cr_Rd: (CR%u) Guest intercept -> VM-exit\n", iCrReg)); 3009 3008 VMXVEXITINFO const ExitInfo 3010 = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3011 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, iCrReg) 3012 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3013 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, 3014 VMX_EXIT_QUAL_CRX_ACCESS_WRITE), 3015 cbInstr); 3009 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3010 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, iCrReg) 3011 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3012 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_WRITE), 3013 cbInstr); 3016 3014 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3017 3015 } … … 3064 3062 Log2(("mov_Rd_Cr: (CR3) Guest intercept -> VM-exit\n")); 3065 3063 VMXVEXITINFO const ExitInfo 3066 = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3067 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 3) /* CR3 */ 3068 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3069 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, 3070 VMX_EXIT_QUAL_CRX_ACCESS_READ), 3071 cbInstr); 3064 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3065 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 3) /* CR3 */ 3066 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3067 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_READ), 3068 cbInstr); 3072 3069 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3073 3070 } … … 3100 3097 Log2(("mov_Cr_Rd: (CR3) Guest intercept -> VM-exit\n")); 3101 3098 VMXVEXITINFO const ExitInfo 3102 = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX,3103 3104 3105 3106 3107 3099 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3100 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 3) /* CR3 */ 3101 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3102 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, 3103 VMX_EXIT_QUAL_CRX_ACCESS_WRITE), 3104 cbInstr); 3108 3105 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3109 3106 } … … 3132 3129 Log2(("mov_Rd_Cr: (CR8) Guest intercept -> VM-exit\n")); 3133 3130 VMXVEXITINFO const ExitInfo 3134 = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3135 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 8) /* CR8 */ 3136 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3137 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, 3138 VMX_EXIT_QUAL_CRX_ACCESS_READ), 3139 cbInstr); 3131 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3132 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 8) /* CR8 */ 3133 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3134 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_READ), 3135 cbInstr); 3140 3136 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3141 3137 } … … 3165 3161 Log2(("mov_Cr_Rd: (CR8) Guest intercept -> VM-exit\n")); 3166 3162 VMXVEXITINFO const ExitInfo 3167 = VMXVEXITINFO_INIT_WITH_QUALIFIER_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3168 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 8) /* CR8 */ 3169 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3170 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, 3171 VMX_EXIT_QUAL_CRX_ACCESS_WRITE), 3172 cbInstr); 3163 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_CRX, 3164 RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_REGISTER, 8) /* CR8 */ 3165 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_GENREG, iGReg) 3166 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_CRX_ACCESS, VMX_EXIT_QUAL_CRX_ACCESS_WRITE), 3167 cbInstr); 3173 3168 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3174 3169 } … … 3200 3195 { 3201 3196 VMXVEXITINFO const ExitInfo 3202 = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_LEN(VMX_EXIT_MOV_DRX,3203 3204 3205 3206 3207 3208 3209 3197 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MOV_DRX, 3198 RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_REGISTER, iDrReg) 3199 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_GENREG, iGReg) 3200 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_DRX_DIRECTION, 3201 uInstrId == VMXINSTRID_MOV_TO_DRX 3202 ? VMX_EXIT_QUAL_DRX_DIRECTION_WRITE 3203 : VMX_EXIT_QUAL_DRX_DIRECTION_READ), 3204 cbInstr); 3210 3205 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3211 3206 } … … 3237 3232 { 3238 3233 VMXVEXITINFO const ExitInfo 3239 = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_LEN(VMX_EXIT_IO_INSTR,3240 3241 3242 3243 3244 3245 3246 3247 3234 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_IO_INSTR, 3235 RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_WIDTH, cbAccess - 1) 3236 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_ENCODING, fImm) 3237 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_PORT, u16Port) 3238 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_DIRECTION, 3239 uInstrId == VMXINSTRID_IO_IN 3240 ? VMX_EXIT_QUAL_IO_DIRECTION_IN 3241 : VMX_EXIT_QUAL_IO_DIRECTION_OUT), 3242 cbInstr); 3248 3243 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3249 3244 } … … 3308 3303 3309 3304 VMXVEXITINFO const ExitInfo 3310 = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_INFO_AND_LIN_ADDR(VMX_EXIT_IO_INSTR,3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3305 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_INFO_AND_LIN_ADDR(VMX_EXIT_IO_INSTR, 3306 RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_WIDTH, cbAccess - 1) 3307 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_DIRECTION, uDirection) 3308 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_IS_STRING, 1) 3309 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_IS_REP, fRep) 3310 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_ENCODING, 3311 VMX_EXIT_QUAL_IO_ENCODING_DX) 3312 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_IO_PORT, u16Port), 3313 IEM_GET_GUEST_CPU_FEATURES(pVCpu)->fVmxInsOutInfo 3314 ? ExitInstrInfo.u : 0, 3315 cbInstr, 3316 uGuestLinearAddr); 3322 3317 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3323 3318 } … … 3337 3332 VBOXSTRICTRC iemVmxVmexitInstrMwait(PVMCPUCC pVCpu, bool fMonitorHwArmed, uint8_t cbInstr) RT_NOEXCEPT 3338 3333 { 3339 VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_LEN(VMX_EXIT_MWAIT, fMonitorHwArmed, cbInstr);3334 VMXVEXITINFO const ExitInfo = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_MWAIT, fMonitorHwArmed, cbInstr); 3340 3335 return iemVmxVmexitInstrWithInfo(pVCpu, &ExitInfo); 3341 3336 } … … 9984 9979 LogFlowFunc(("Raising APIC-access VM-exit from #PF handler at offset %#x\n", offAccess)); 9985 9980 VMXVEXITINFO const ExitInfo 9986 = VMXVEXITINFO_INIT_WITH_QUAL IFIER_AND_INSTR_LEN(VMX_EXIT_APIC_ACCESS,9987 9988 9989 9981 = VMXVEXITINFO_INIT_WITH_QUAL_AND_INSTR_LEN(VMX_EXIT_APIC_ACCESS, 9982 RT_BF_MAKE(VMX_BF_EXIT_QUAL_APIC_ACCESS_OFFSET, offAccess) 9983 | RT_BF_MAKE(VMX_BF_EXIT_QUAL_APIC_ACCESS_TYPE, enmAccess), 9984 HmExitAux.Vmx.cbInstr); 9990 9985 VMXVEXITEVENTINFO const ExitEventInfo = VMXVEXITEVENTINFO_INIT_ONLY_IDT(HmExitAux.Vmx.uIdtVectoringInfo, 9991 9986 HmExitAux.Vmx.uIdtVectoringErrCode);
Note:
See TracChangeset
for help on using the changeset viewer.