- Timestamp:
- Jan 4, 2019 3:46:42 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HMVMXR0.cpp
r76553 r76637 10363 10363 case VMX_EXIT_GETSEC: VMEXIT_CALL_RET(0, hmR0VmxExitGetsec(pVCpu, pVmxTransient)); 10364 10364 case VMX_EXIT_RDPMC: VMEXIT_CALL_RET(0, hmR0VmxExitRdpmc(pVCpu, pVmxTransient)); 10365 #ifdef VBOX_WITH_NESTED_HWVIRT_VMX 10366 case VMX_EXIT_VMCLEAR: VMEXIT_CALL_RET(0, hmR0VmxExitVmclear(pVCpu, pVmxTransient)); 10367 case VMX_EXIT_VMLAUNCH: VMEXIT_CALL_RET(0, hmR0VmxExitVmlaunch(pVCpu, pVmxTransient)); 10368 case VMX_EXIT_VMPTRLD: VMEXIT_CALL_RET(0, hmR0VmxExitVmptrld(pVCpu, pVmxTransient)); 10369 case VMX_EXIT_VMPTRST: VMEXIT_CALL_RET(0, hmR0VmxExitVmptrst(pVCpu, pVmxTransient)); 10370 case VMX_EXIT_VMREAD: VMEXIT_CALL_RET(0, hmR0VmxExitVmread(pVCpu, pVmxTransient)); 10371 case VMX_EXIT_VMRESUME: VMEXIT_CALL_RET(0, hmR0VmxExitVmwrite(pVCpu, pVmxTransient)); 10372 case VMX_EXIT_VMWRITE: VMEXIT_CALL_RET(0, hmR0VmxExitVmresume(pVCpu, pVmxTransient)); 10373 case VMX_EXIT_VMXOFF: VMEXIT_CALL_RET(0, hmR0VmxExitVmxoff(pVCpu, pVmxTransient)); 10374 case VMX_EXIT_VMXON: VMEXIT_CALL_RET(0, hmR0VmxExitVmxon(pVCpu, pVmxTransient)); 10375 #else 10376 case VMX_EXIT_VMCLEAR: 10377 case VMX_EXIT_VMLAUNCH: 10378 case VMX_EXIT_VMPTRLD: 10379 case VMX_EXIT_VMPTRST: 10380 case VMX_EXIT_VMREAD: 10381 case VMX_EXIT_VMRESUME: 10382 case VMX_EXIT_VMWRITE: 10383 case VMX_EXIT_VMXOFF: 10384 case VMX_EXIT_VMXON: 10385 return hmR0VmxExitSetPendingXcptUD(pVCpu, pVmxTransient); 10386 #endif 10365 10387 10366 10388 case VMX_EXIT_TRIPLE_FAULT: return hmR0VmxExitTripleFault(pVCpu, pVmxTransient); … … 10374 10396 case VMX_EXIT_ERR_MACHINE_CHECK: return hmR0VmxExitErrMachineCheck(pVCpu, pVmxTransient); 10375 10397 10376 case VMX_EXIT_VMCLEAR:10377 case VMX_EXIT_VMLAUNCH:10378 case VMX_EXIT_VMPTRLD:10379 case VMX_EXIT_VMPTRST:10380 case VMX_EXIT_VMREAD:10381 case VMX_EXIT_VMRESUME:10382 case VMX_EXIT_VMWRITE:10383 case VMX_EXIT_VMXOFF:10384 case VMX_EXIT_VMXON:10385 10398 case VMX_EXIT_INVEPT: 10386 10399 case VMX_EXIT_INVVPID: … … 13420 13433 { 13421 13434 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13422 13435 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13423 13436 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13424 13437 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_RSP | CPUMCTX_EXTRN_SREG_MASK … … 13447 13460 } 13448 13461 return rcStrict; 13462 #else 13463 return VERR_EM_INTERPRETER; 13464 #endif 13449 13465 } 13450 13466 … … 13456 13472 { 13457 13473 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13458 13474 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13459 13475 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13460 13476 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_VMX_VMENTRY_MASK); … … 13468 13484 Assert(rcStrict != VINF_IEM_RAISED_XCPT); 13469 13485 return rcStrict; 13486 #else 13487 return VERR_EM_INTERPRETER; 13488 #endif 13470 13489 } 13471 13490 … … 13477 13496 { 13478 13497 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13479 13498 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13480 13499 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13481 13500 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_RSP | CPUMCTX_EXTRN_SREG_MASK … … 13504 13523 } 13505 13524 return rcStrict; 13525 #else 13526 return VERR_EM_INTERPRETER; 13527 #endif 13506 13528 } 13507 13529 … … 13513 13535 { 13514 13536 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13515 13537 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13516 13538 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13517 13539 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_RSP | CPUMCTX_EXTRN_SREG_MASK … … 13540 13562 } 13541 13563 return rcStrict; 13564 #else 13565 return VERR_EM_INTERPRETER; 13566 #endif 13542 13567 } 13543 13568 … … 13549 13574 { 13550 13575 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13551 13576 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13552 13577 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13553 13578 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_RSP | CPUMCTX_EXTRN_SREG_MASK … … 13577 13602 } 13578 13603 return rcStrict; 13604 #else 13605 return VERR_EM_INTERPRETER; 13606 #endif 13579 13607 } 13580 13608 … … 13586 13614 { 13587 13615 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13588 13616 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13589 13617 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13590 13618 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, IEM_CPUMCTX_EXTRN_VMX_VMENTRY_MASK); … … 13598 13626 Assert(rcStrict != VINF_IEM_RAISED_XCPT); 13599 13627 return rcStrict; 13628 #else 13629 return VERR_EM_INTERPRETER; 13630 #endif 13600 13631 } 13601 13632 … … 13607 13638 { 13608 13639 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13609 13640 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13610 13641 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13611 13642 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_RSP | CPUMCTX_EXTRN_SREG_MASK … … 13635 13666 } 13636 13667 return rcStrict; 13668 #else 13669 return VERR_EM_INTERPRETER; 13670 #endif 13637 13671 } 13638 13672 … … 13644 13678 { 13645 13679 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13646 13680 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13647 13681 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13648 13682 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_CR4 | IEM_CPUMCTX_EXTRN_EXEC_DECODED_NO_MEM_MASK); … … 13663 13697 } 13664 13698 return rcStrict; 13699 #else 13700 return VERR_EM_INTERPRETER; 13701 #endif 13665 13702 } 13666 13703 … … 13672 13709 { 13673 13710 HMVMX_VALIDATE_EXIT_HANDLER_PARAMS(pVCpu, pVmxTransient); 13674 13711 #ifndef VBOX_WITH_NESTED_HWVIRT_ONLY_IN_IEM 13675 13712 int rc = hmR0VmxReadExitInstrLenVmcs(pVmxTransient); 13676 13713 rc |= HMVMX_CPUMCTX_IMPORT_STATE(pVCpu, CPUMCTX_EXTRN_RSP | CPUMCTX_EXTRN_SREG_MASK … … 13699 13736 } 13700 13737 return rcStrict; 13738 #else 13739 return VERR_EM_INTERPRETER; 13740 #endif 13701 13741 } 13702 13742
Note:
See TracChangeset
for help on using the changeset viewer.