Changeset 9708 in vbox for trunk/src/VBox
- Timestamp:
- Jun 16, 2008 10:01:38 AM (17 years ago)
- Location:
- trunk/src/VBox/VMM/VMMR0
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR0/HWSVMR0.cpp
r9660 r9708 349 349 #ifdef VBOX_STRICT 350 350 if (pEvent->n.u8Vector == 0xE) 351 Log(("SVM: Inject int %d at %VGv error code=%08x CR2=%08x intInfo=%08x\n", pEvent->n.u8Vector, pCtx-> eip, pEvent->n.u32ErrorCode, pCtx->cr2, pEvent->au64[0]));351 Log(("SVM: Inject int %d at %VGv error code=%08x CR2=%08x intInfo=%08x\n", pEvent->n.u8Vector, pCtx->rip, pEvent->n.u32ErrorCode, pCtx->cr2, pEvent->au64[0])); 352 352 else 353 353 if (pEvent->n.u8Vector < 0x20) 354 Log(("SVM: Inject int %d at %VGv error code=%08x\n", pEvent->n.u8Vector, pCtx-> eip, pEvent->n.u32ErrorCode));354 Log(("SVM: Inject int %d at %VGv error code=%08x\n", pEvent->n.u8Vector, pCtx->rip, pEvent->n.u32ErrorCode)); 355 355 else 356 356 { 357 Log(("INJ-EI: %x at %VGv\n", pEvent->n.u8Vector, pCtx-> eip));357 Log(("INJ-EI: %x at %VGv\n", pEvent->n.u8Vector, pCtx->rip)); 358 358 Assert(!VM_FF_ISSET(pVM, VM_FF_INHIBIT_INTERRUPTS)); 359 359 Assert(pCtx->eflags.u32 & X86_EFL_IF); … … 383 383 SVM_EVENT Event; 384 384 385 Log(("Reinjecting event %08x %08x at %VGv\n", pVM->hwaccm.s.Event.intInfo, pVM->hwaccm.s.Event.errCode, pCtx-> eip));385 Log(("Reinjecting event %08x %08x at %VGv\n", pVM->hwaccm.s.Event.intInfo, pVM->hwaccm.s.Event.errCode, pCtx->rip)); 386 386 STAM_COUNTER_INC(&pVM->hwaccm.s.StatIntReinject); 387 387 Event.au64[0] = pVM->hwaccm.s.Event.intInfo; … … 429 429 } 430 430 else 431 Log(("Pending interrupt blocked at %VGv by VM_FF_INHIBIT_INTERRUPTS!!\n", pCtx-> eip));431 Log(("Pending interrupt blocked at %VGv by VM_FF_INHIBIT_INTERRUPTS!!\n", pCtx->rip)); 432 432 } 433 433 … … 772 772 if (VM_FF_ISSET(pVM, VM_FF_INHIBIT_INTERRUPTS)) 773 773 { 774 Log(("VM_FF_INHIBIT_INTERRUPTS at %VGv successor %VGv\n", pCtx-> eip, EMGetInhibitInterruptsPC(pVM)));775 if (pCtx-> eip != EMGetInhibitInterruptsPC(pVM))774 Log(("VM_FF_INHIBIT_INTERRUPTS at %VGv successor %VGv\n", pCtx->rip, EMGetInhibitInterruptsPC(pVM))); 775 if (pCtx->rip != EMGetInhibitInterruptsPC(pVM)) 776 776 { 777 777 /** @note we intentionally don't clear VM_FF_INHIBIT_INTERRUPTS here. … … 1074 1074 if (pVMCB->ctrl.u64IntShadow & SVM_INTERRUPT_SHADOW_ACTIVE) 1075 1075 { 1076 Log(("uInterruptState %x eip=%VGv\n", pVMCB->ctrl.u64IntShadow, pCtx-> eip));1077 EMSetInhibitInterruptsPC(pVM, pCtx-> eip);1076 Log(("uInterruptState %x eip=%VGv\n", pVMCB->ctrl.u64IntShadow, pCtx->rip)); 1077 EMSetInhibitInterruptsPC(pVM, pCtx->rip); 1078 1078 } 1079 1079 else … … 1092 1092 && pVMCB->ctrl.ExitIntInfo.n.u3Type != SVM_EVENT_SOFTWARE_INT /* we don't care about 'int xx' as the instruction will be restarted. */) 1093 1093 { 1094 Log(("Pending inject %VX64 at % 08x exit=%08x\n", pVM->hwaccm.s.Event.intInfo, pCtx->eip, exitCode));1094 Log(("Pending inject %VX64 at %VGv exit=%08x\n", pVM->hwaccm.s.Event.intInfo, pCtx->rip, exitCode)); 1095 1095 pVM->hwaccm.s.Event.fPending = true; 1096 1096 /* Error code present? (redundant) */ … … 1139 1139 uint32_t oldCR0; 1140 1140 1141 Log(("#NM fault at %VGv\n", pCtx-> eip));1141 Log(("#NM fault at %VGv\n", pCtx->rip)); 1142 1142 1143 1143 /** @todo don't intercept #NM exceptions anymore when we've activated the guest FPU state. */ … … 1184 1184 * Forward the trap to the guest by injecting the exception and resuming execution. 1185 1185 */ 1186 Log(("Page fault at %VGv cr2=%VGv error code %x\n", pCtx-> eip, uFaultAddress, errCode));1186 Log(("Page fault at %VGv cr2=%VGv error code %x\n", pCtx->rip, uFaultAddress, errCode)); 1187 1187 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitGuestPF); 1188 1188 … … 1205 1205 Assert(!pVM->hwaccm.s.fNestedPaging); 1206 1206 1207 Log2(("Page fault at %VGv cr2=%VGv error code %x\n", pCtx-> eip, uFaultAddress, errCode));1207 Log2(("Page fault at %VGv cr2=%VGv error code %x\n", pCtx->rip, uFaultAddress, errCode)); 1208 1208 /* Exit qualification contains the linear address of the page fault. */ 1209 1209 TRPMAssertTrap(pVM, X86_XCPT_PF, TRPM_TRAP); … … 1213 1213 /* Forward it to our trap handler first, in case our shadow pages are out of sync. */ 1214 1214 rc = PGMTrap0eHandler(pVM, errCode, CPUMCTX2CORE(pCtx), (RTGCPTR)uFaultAddress); 1215 Log2(("PGMTrap0eHandler %VGv returned %Vrc\n", pCtx-> eip, rc));1215 Log2(("PGMTrap0eHandler %VGv returned %Vrc\n", pCtx->rip, rc)); 1216 1216 if (rc == VINF_SUCCESS) 1217 1217 { /* We've successfully synced our shadow pages, so let's just continue execution. */ 1218 Log2(("Shadow page fault at %VGv cr2=%VGv error code %x\n", pCtx-> eip, uFaultAddress, errCode));1218 Log2(("Shadow page fault at %VGv cr2=%VGv error code %x\n", pCtx->rip, uFaultAddress, errCode)); 1219 1219 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitShadowPF); 1220 1220 … … 1270 1270 break; 1271 1271 } 1272 Log(("Trap %x at %VGv\n", vector, pCtx-> eip));1272 Log(("Trap %x at %VGv\n", vector, pCtx->rip)); 1273 1273 1274 1274 Event.au64[0] = 0; … … 1319 1319 break; 1320 1320 } 1321 Log(("Trap %x at %VGv esi=%x\n", vector, pCtx-> eip, pCtx->esi));1321 Log(("Trap %x at %VGv esi=%x\n", vector, pCtx->rip, pCtx->esi)); 1322 1322 SVMR0InjectEvent(pVM, pVMCB, pCtx, &Event); 1323 1323 … … 1343 1343 Assert(pVM->hwaccm.s.fNestedPaging); 1344 1344 1345 Log(("Nested page fault at %VGv cr2=%VGp error code %x\n", pCtx-> eip, uFaultAddress, errCode));1345 Log(("Nested page fault at %VGv cr2=%VGp error code %x\n", pCtx->rip, uFaultAddress, errCode)); 1346 1346 /* Exit qualification contains the linear address of the page fault. */ 1347 1347 TRPMAssertTrap(pVM, X86_XCPT_PF, TRPM_TRAP); … … 1351 1351 /* Handle the pagefault trap for the nested shadow table. */ 1352 1352 rc = PGMR0Trap0eHandlerNestedPaging(pVM, PGMGetHostMode(pVM), errCode, CPUMCTX2CORE(pCtx), uFaultAddress); 1353 Log2(("PGMR0Trap0eHandlerNestedPaging %VGv returned %Vrc\n", pCtx-> eip, rc));1353 Log2(("PGMR0Trap0eHandlerNestedPaging %VGv returned %Vrc\n", pCtx->rip, rc)); 1354 1354 if (rc == VINF_SUCCESS) 1355 1355 { /* We've successfully synced our shadow pages, so let's just continue execution. */ 1356 Log2(("Shadow page fault at %VGv cr2=%VGp error code %x\n", pCtx-> eip, uFaultAddress, errCode));1356 Log2(("Shadow page fault at %VGv cr2=%VGp error code %x\n", pCtx->rip, uFaultAddress, errCode)); 1357 1357 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitShadowPF); 1358 1358 … … 1393 1393 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitInvd); 1394 1394 /* Skip instruction and continue directly. */ 1395 pCtx-> eip += 2; /** @note hardcoded opcode size! */1395 pCtx->rip += 2; /** @note hardcoded opcode size! */ 1396 1396 /* Continue execution.*/ 1397 1397 STAM_PROFILE_ADV_STOP(&pVM->hwaccm.s.StatExit, x); … … 1406 1406 { 1407 1407 /* Update EIP and continue execution. */ 1408 pCtx-> eip += 2; /** @note hardcoded opcode size! */1408 pCtx->rip += 2; /** @note hardcoded opcode size! */ 1409 1409 STAM_PROFILE_ADV_STOP(&pVM->hwaccm.s.StatExit, x); 1410 1410 goto ResumeExecution; … … 1423 1423 { 1424 1424 /* Update EIP and continue execution. */ 1425 pCtx-> eip += 2; /** @note hardcoded opcode size! */1425 pCtx->rip += 2; /** @note hardcoded opcode size! */ 1426 1426 STAM_PROFILE_ADV_STOP(&pVM->hwaccm.s.StatExit, x); 1427 1427 goto ResumeExecution; … … 1456 1456 uint32_t cbSize; 1457 1457 1458 Log2(("SVM: %VGv mov cr%d, \n", pCtx-> eip, exitCode - SVM_EXIT_WRITE_CR0));1458 Log2(("SVM: %VGv mov cr%d, \n", pCtx->rip, exitCode - SVM_EXIT_WRITE_CR0)); 1459 1459 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitCRxWrite); 1460 1460 rc = EMInterpretInstruction(pVM, CPUMCTX2CORE(pCtx), 0, &cbSize); … … 1508 1508 uint32_t cbSize; 1509 1509 1510 Log2(("SVM: %VGv mov x, cr%d\n", pCtx-> eip, exitCode - SVM_EXIT_READ_CR0));1510 Log2(("SVM: %VGv mov x, cr%d\n", pCtx->rip, exitCode - SVM_EXIT_READ_CR0)); 1511 1511 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitCRxRead); 1512 1512 rc = EMInterpretInstruction(pVM, CPUMCTX2CORE(pCtx), 0, &cbSize); … … 1530 1530 uint32_t cbSize; 1531 1531 1532 Log2(("SVM: %VGv mov dr%d, x\n", pCtx-> eip, exitCode - SVM_EXIT_WRITE_DR0));1532 Log2(("SVM: %VGv mov dr%d, x\n", pCtx->rip, exitCode - SVM_EXIT_WRITE_DR0)); 1533 1533 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitDRxRead); 1534 1534 rc = EMInterpretInstruction(pVM, CPUMCTX2CORE(pCtx), 0, &cbSize); … … 1552 1552 uint32_t cbSize; 1553 1553 1554 Log2(("SVM: %VGv mov dr%d, x\n", pCtx-> eip, exitCode - SVM_EXIT_READ_DR0));1554 Log2(("SVM: %VGv mov dr%d, x\n", pCtx->rip, exitCode - SVM_EXIT_READ_DR0)); 1555 1555 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitDRxRead); 1556 1556 rc = EMInterpretInstruction(pVM, CPUMCTX2CORE(pCtx), 0, &cbSize); … … 1609 1609 if (IoExitInfo.n.u1Type == 0) 1610 1610 { 1611 Log2(("IOMInterpretOUTSEx %VGv %x size=%d\n", pCtx-> eip, IoExitInfo.n.u16Port, uIOSize));1611 Log2(("IOMInterpretOUTSEx %VGv %x size=%d\n", pCtx->rip, IoExitInfo.n.u16Port, uIOSize)); 1612 1612 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitIOStringWrite); 1613 1613 rc = IOMInterpretOUTSEx(pVM, CPUMCTX2CORE(pCtx), IoExitInfo.n.u16Port, prefix, uIOSize); … … 1615 1615 else 1616 1616 { 1617 Log2(("IOMInterpretINSEx %VGv %x size=%d\n", pCtx-> eip, IoExitInfo.n.u16Port, uIOSize));1617 Log2(("IOMInterpretINSEx %VGv %x size=%d\n", pCtx->rip, IoExitInfo.n.u16Port, uIOSize)); 1618 1618 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitIOStringRead); 1619 1619 rc = IOMInterpretINSEx(pVM, CPUMCTX2CORE(pCtx), IoExitInfo.n.u16Port, prefix, uIOSize); … … 1627 1627 if (IoExitInfo.n.u1Type == 0) 1628 1628 { 1629 Log2(("IOMIOPortWrite %VGv %x %x size=%d\n", pCtx-> eip, IoExitInfo.n.u16Port, pCtx->eax & uAndVal, uIOSize));1629 Log2(("IOMIOPortWrite %VGv %x %x size=%d\n", pCtx->rip, IoExitInfo.n.u16Port, pCtx->eax & uAndVal, uIOSize)); 1630 1630 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitIOWrite); 1631 1631 rc = IOMIOPortWrite(pVM, IoExitInfo.n.u16Port, pCtx->eax & uAndVal, uIOSize); … … 1641 1641 /* Write back to the EAX register. */ 1642 1642 pCtx->eax = (pCtx->eax & ~uAndVal) | (u32Val & uAndVal); 1643 Log2(("IOMIOPortRead %VGv %x %x size=%d\n", pCtx-> eip, IoExitInfo.n.u16Port, u32Val & uAndVal, uIOSize));1643 Log2(("IOMIOPortRead %VGv %x %x size=%d\n", pCtx->rip, IoExitInfo.n.u16Port, u32Val & uAndVal, uIOSize)); 1644 1644 } 1645 1645 } … … 1652 1652 { 1653 1653 /* Update EIP and continue execution. */ 1654 pCtx-> eip = pVMCB->ctrl.u64ExitInfo2; /* RIP/EIP of the next instruction is saved in EXITINFO2. */1654 pCtx->rip = pVMCB->ctrl.u64ExitInfo2; /* RIP/EIP of the next instruction is saved in EXITINFO2. */ 1655 1655 if (RT_LIKELY(rc == VINF_SUCCESS)) 1656 1656 { … … 1658 1658 goto ResumeExecution; 1659 1659 } 1660 Log2(("EM status from IO at %VGv %x size %d: %Vrc\n", pCtx-> eip, IoExitInfo.n.u16Port, uIOSize, rc));1660 Log2(("EM status from IO at %VGv %x size %d: %Vrc\n", pCtx->rip, IoExitInfo.n.u16Port, uIOSize, rc)); 1661 1661 break; 1662 1662 } … … 1670 1670 AssertMsg(VBOX_FAILURE(rc) || rc == VINF_EM_RAW_EMULATE_INSTR || rc == VINF_EM_RAW_GUEST_TRAP || rc == VINF_TRPM_XCPT_DISPATCHED, ("%Vrc\n", rc)); 1671 1671 #endif 1672 Log2(("Failed IO at %VGv %x size %d\n", pCtx-> eip, IoExitInfo.n.u16Port, uIOSize));1672 Log2(("Failed IO at %VGv %x size %d\n", pCtx->rip, IoExitInfo.n.u16Port, uIOSize)); 1673 1673 break; 1674 1674 } … … 1679 1679 && VM_FF_ISPENDING(pVM, (VM_FF_INTERRUPT_APIC|VM_FF_INTERRUPT_PIC))) 1680 1680 { 1681 pCtx-> eip++; /* skip hlt */1681 pCtx->rip++; /* skip hlt */ 1682 1682 goto ResumeExecution; 1683 1683 } … … 1705 1705 Event.n.u8Vector = X86_XCPT_UD; 1706 1706 1707 Log(("Forced #UD trap at %VGv\n", pCtx-> eip));1707 Log(("Forced #UD trap at %VGv\n", pCtx->rip)); 1708 1708 SVMR0InjectEvent(pVM, pVMCB, pCtx, &Event); 1709 1709 … … 1883 1883 { 1884 1884 RTGCPTR pbCode; 1885 int rc = SELMValidateAndConvertCSAddr(pVM, pRegFrame->eflags, pRegFrame->ss, pRegFrame->cs, &pRegFrame->csHid, (RTGCPTR)pRegFrame-> eip, &pbCode);1885 int rc = SELMValidateAndConvertCSAddr(pVM, pRegFrame->eflags, pRegFrame->ss, pRegFrame->cs, &pRegFrame->csHid, (RTGCPTR)pRegFrame->rip, &pbCode); 1886 1886 if (VBOX_SUCCESS(rc)) 1887 1887 { … … 1898 1898 if (VBOX_SUCCESS(rc)) 1899 1899 { 1900 pRegFrame-> eip += cbOp; /* Move on to the next instruction. */1900 pRegFrame->rip += cbOp; /* Move on to the next instruction. */ 1901 1901 } 1902 1902 return rc; … … 1978 1978 { 1979 1979 RTGCPTR pbCode; 1980 int rc = SELMValidateAndConvertCSAddr(pVM, pCtx->eflags, pCtx->ss, pCtx->cs, &pCtx->csHid, (RTGCPTR)pCtx-> eip, &pbCode);1980 int rc = SELMValidateAndConvertCSAddr(pVM, pCtx->eflags, pCtx->ss, pCtx->cs, &pCtx->csHid, (RTGCPTR)pCtx->rip, &pbCode); 1981 1981 if (VBOX_SUCCESS(rc)) 1982 1982 { -
trunk/src/VBox/VMM/VMMR0/HWVMXR0.cpp
r9535 r9708 396 396 uint32_t iGate = VMX_EXIT_INTERRUPTION_INFO_VECTOR(intInfo); 397 397 if (iGate == 0xE) 398 Log2(("VMXR0InjectEvent: Injecting interrupt %d at %VGv error code=%08x CR2=%08x intInfo=%08x\n", iGate, pCtx-> eip, errCode, pCtx->cr2, intInfo));398 Log2(("VMXR0InjectEvent: Injecting interrupt %d at %VGv error code=%08x CR2=%08x intInfo=%08x\n", iGate, pCtx->rip, errCode, pCtx->cr2, intInfo)); 399 399 else 400 400 if (iGate < 0x20) 401 Log2(("VMXR0InjectEvent: Injecting interrupt %d at %VGv error code=%08x\n", iGate, pCtx-> eip, errCode));401 Log2(("VMXR0InjectEvent: Injecting interrupt %d at %VGv error code=%08x\n", iGate, pCtx->rip, errCode)); 402 402 else 403 403 { 404 Log2(("INJ-EI: %x at %VGv\n", iGate, pCtx-> eip));404 Log2(("INJ-EI: %x at %VGv\n", iGate, pCtx->rip)); 405 405 Assert(!VM_FF_ISSET(pVM, VM_FF_INHIBIT_INTERRUPTS)); 406 406 Assert(pCtx->eflags.u32 & X86_EFL_IF); … … 435 435 if (pVM->hwaccm.s.Event.fPending) 436 436 { 437 Log(("Reinjecting event %VX64 %08x at %VGv\n", pVM->hwaccm.s.Event.intInfo, pVM->hwaccm.s.Event.errCode, pCtx-> eip));437 Log(("Reinjecting event %VX64 %08x at %VGv\n", pVM->hwaccm.s.Event.intInfo, pVM->hwaccm.s.Event.errCode, pCtx->rip)); 438 438 STAM_COUNTER_INC(&pVM->hwaccm.s.StatIntReinject); 439 439 rc = VMXR0InjectEvent(pVM, pCtx, pVM->hwaccm.s.Event.intInfo, 0, pVM->hwaccm.s.Event.errCode); … … 476 476 } 477 477 else 478 Log(("Pending interrupt blocked at %VGv by VM_FF_INHIBIT_INTERRUPTS!!\n", pCtx-> eip));478 Log(("Pending interrupt blocked at %VGv by VM_FF_INHIBIT_INTERRUPTS!!\n", pCtx->rip)); 479 479 } 480 480 … … 1089 1089 if (VM_FF_ISSET(pVM, VM_FF_INHIBIT_INTERRUPTS)) 1090 1090 { 1091 Log(("VM_FF_INHIBIT_INTERRUPTS at %VGv successor %VGv\n", pCtx-> eip, EMGetInhibitInterruptsPC(pVM)));1092 if (pCtx-> eip != EMGetInhibitInterruptsPC(pVM))1091 Log(("VM_FF_INHIBIT_INTERRUPTS at %VGv successor %VGv\n", pCtx->rip, EMGetInhibitInterruptsPC(pVM))); 1092 if (pCtx->rip != EMGetInhibitInterruptsPC(pVM)) 1093 1093 { 1094 1094 /** @note we intentionally don't clear VM_FF_INHIBIT_INTERRUPTS here. … … 1219 1219 1220 1220 VMXReadVMCS(VMX_VMCS_GUEST_RIP, &val); 1221 Log(("Old eip %VGv new %VGv\n", pCtx-> eip, (RTGCPTR)val));1221 Log(("Old eip %VGv new %VGv\n", pCtx->rip, (RTGCPTR)val)); 1222 1222 VMXReadVMCS(VMX_VMCS_CTRL_PIN_EXEC_CONTROLS, &val); 1223 1223 Log(("VMX_VMCS_CTRL_PIN_EXEC_CONTROLS %08x\n", val)); … … 1369 1369 { 1370 1370 Assert(uInterruptState <= 2); /* only sti & mov ss */ 1371 Log(("uInterruptState %x eip=%VGv\n", uInterruptState, pCtx-> eip));1372 EMSetInhibitInterruptsPC(pVM, pCtx-> eip);1371 Log(("uInterruptState %x eip=%VGv\n", uInterruptState, pCtx->rip)); 1372 EMSetInhibitInterruptsPC(pVM, pCtx->rip); 1373 1373 } 1374 1374 else … … 1419 1419 && VMX_EXIT_INTERRUPTION_INFO_TYPE(pVM->hwaccm.s.Event.intInfo) != VMX_EXIT_INTERRUPTION_INFO_TYPE_SW) 1420 1420 { 1421 Log(("Pending inject %VX64 at % 08x exit=%08x intInfo=%08x exitQualification=%08x\n", pVM->hwaccm.s.Event.intInfo, pCtx->eip, exitReason, intInfo, exitQualification));1421 Log(("Pending inject %VX64 at %VGv exit=%08x intInfo=%08x exitQualification=%08x\n", pVM->hwaccm.s.Event.intInfo, pCtx->rip, exitReason, intInfo, exitQualification)); 1422 1422 pVM->hwaccm.s.Event.fPending = true; 1423 1423 /* Error code present? */ … … 1442 1442 Log2(("Interruption error code %d\n", errCode)); 1443 1443 Log2(("IntInfo = %08x\n", intInfo)); 1444 Log2(("New EIP=%VGv\n", pCtx-> eip));1444 Log2(("New EIP=%VGv\n", pCtx->rip)); 1445 1445 1446 1446 /* Some cases don't need a complete resync of the guest CPU state; handle them here. */ … … 1481 1481 uint32_t oldCR0; 1482 1482 1483 Log(("#NM fault at %VGv error code %x\n", pCtx-> eip, errCode));1483 Log(("#NM fault at %VGv error code %x\n", pCtx->rip, errCode)); 1484 1484 1485 1485 /** @todo don't intercept #NM exceptions anymore when we've activated the guest FPU state. */ … … 1521 1521 /* Forward it to our trap handler first, in case our shadow pages are out of sync. */ 1522 1522 rc = PGMTrap0eHandler(pVM, errCode, CPUMCTX2CORE(pCtx), (RTGCPTR)exitQualification); 1523 Log2(("PGMTrap0eHandler %VGv returned %Vrc\n", pCtx-> eip, rc));1523 Log2(("PGMTrap0eHandler %VGv returned %Vrc\n", pCtx->rip, rc)); 1524 1524 if (rc == VINF_SUCCESS) 1525 1525 { /* We've successfully synced our shadow pages, so let's just continue execution. */ 1526 Log2(("Shadow page fault at %VGv cr2=%VGv error code %x\n", pCtx-> eip, exitQualification ,errCode));1526 Log2(("Shadow page fault at %VGv cr2=%VGv error code %x\n", pCtx->rip, exitQualification ,errCode)); 1527 1527 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitShadowPF); 1528 1528 … … 1571 1571 break; 1572 1572 } 1573 Log(("Trap %x at %VGv\n", vector, pCtx-> eip));1573 Log(("Trap %x at %VGv\n", vector, pCtx->rip)); 1574 1574 rc = VMXR0InjectEvent(pVM, pCtx, VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(intInfo), cbInstr, errCode); 1575 1575 AssertRC(rc); … … 1605 1605 } 1606 1606 1607 Log(("Trap %x at %VGv\n", vector, pCtx-> eip));1607 Log(("Trap %x at %VGv\n", vector, pCtx->rip)); 1608 1608 rc = VMXR0InjectEvent(pVM, pCtx, VMX_VMCS_CTRL_ENTRY_IRQ_INFO_FROM_EXIT_INT_INFO(intInfo), cbInstr, errCode); 1609 1609 AssertRC(rc); … … 1632 1632 case VMX_EXIT_IRQ_WINDOW: /* 7 Interrupt window. */ 1633 1633 /* Clear VM-exit on IF=1 change. */ 1634 Log2(("VMX_EXIT_IRQ_WINDOW %VGv\n", pCtx-> eip));1634 Log2(("VMX_EXIT_IRQ_WINDOW %VGv\n", pCtx->rip)); 1635 1635 pVM->hwaccm.s.vmx.proc_ctls &= ~VMX_VMCS_CTRL_PROC_EXEC_CONTROLS_IRQ_WINDOW_EXIT; 1636 1636 rc = VMXWriteVMCS(VMX_VMCS_CTRL_PROC_EXEC_CONTROLS, pVM->hwaccm.s.vmx.proc_ctls); … … 1642 1642 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitInvd); 1643 1643 /* Skip instruction and continue directly. */ 1644 pCtx-> eip += cbInstr;1644 pCtx->rip += cbInstr; 1645 1645 /* Continue execution.*/ 1646 1646 STAM_PROFILE_ADV_STOP(&pVM->hwaccm.s.StatExit, x); … … 1656 1656 /* Update EIP and continue execution. */ 1657 1657 Assert(cbInstr == 2); 1658 pCtx-> eip += cbInstr;1658 pCtx->rip += cbInstr; 1659 1659 STAM_PROFILE_ADV_STOP(&pVM->hwaccm.s.StatExit, x); 1660 1660 goto ResumeExecution; … … 1674 1674 /* Update EIP and continue execution. */ 1675 1675 Assert(cbInstr == 2); 1676 pCtx-> eip += cbInstr;1676 pCtx->rip += cbInstr; 1677 1677 STAM_PROFILE_ADV_STOP(&pVM->hwaccm.s.StatExit, x); 1678 1678 goto ResumeExecution; … … 1691 1691 { 1692 1692 /* Update EIP and continue execution. */ 1693 pCtx-> eip += cbInstr;1693 pCtx->rip += cbInstr; 1694 1694 STAM_PROFILE_ADV_STOP(&pVM->hwaccm.s.StatExit, x); 1695 1695 goto ResumeExecution; … … 1704 1704 { 1705 1705 case VMX_EXIT_QUALIFICATION_CRX_ACCESS_WRITE: 1706 Log2(("VMX: %VGv mov cr%d, x\n", pCtx-> eip, VMX_EXIT_QUALIFICATION_CRX_REGISTER(exitQualification)));1706 Log2(("VMX: %VGv mov cr%d, x\n", pCtx->rip, VMX_EXIT_QUALIFICATION_CRX_REGISTER(exitQualification))); 1707 1707 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitCRxWrite); 1708 1708 rc = EMInterpretCRxWrite(pVM, CPUMCTX2CORE(pCtx), … … 1760 1760 /* Update EIP if no error occurred. */ 1761 1761 if (VBOX_SUCCESS(rc)) 1762 pCtx-> eip += cbInstr;1762 pCtx->rip += cbInstr; 1763 1763 1764 1764 if (rc == VINF_SUCCESS) … … 1794 1794 /* Update EIP if no error occurred. */ 1795 1795 if (VBOX_SUCCESS(rc)) 1796 pCtx-> eip += cbInstr;1796 pCtx->rip += cbInstr; 1797 1797 1798 1798 if (rc == VINF_SUCCESS) … … 1839 1839 if (fIOWrite) 1840 1840 { 1841 Log2(("IOMInterpretOUTSEx %VGv %x size=%d\n", pCtx-> eip, uPort, cbSize));1841 Log2(("IOMInterpretOUTSEx %VGv %x size=%d\n", pCtx->rip, uPort, cbSize)); 1842 1842 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitIOStringWrite); 1843 1843 rc = IOMInterpretOUTSEx(pVM, CPUMCTX2CORE(pCtx), uPort, prefix, cbSize); … … 1845 1845 else 1846 1846 { 1847 Log2(("IOMInterpretINSEx %VGv %x size=%d\n", pCtx-> eip, uPort, cbSize));1847 Log2(("IOMInterpretINSEx %VGv %x size=%d\n", pCtx->rip, uPort, cbSize)); 1848 1848 STAM_COUNTER_INC(&pVM->hwaccm.s.StatExitIOStringRead); 1849 1849 rc = IOMInterpretINSEx(pVM, CPUMCTX2CORE(pCtx), uPort, prefix, cbSize); … … 1882 1882 { 1883 1883 /* Update EIP and continue execution. */ 1884 pCtx-> eip += cbInstr;1884 pCtx->rip += cbInstr; 1885 1885 if (RT_LIKELY(rc == VINF_SUCCESS)) 1886 1886 { … … 1942 1942 && VM_FF_ISPENDING(pVM, (VM_FF_INTERRUPT_APIC|VM_FF_INTERRUPT_PIC))) 1943 1943 { 1944 pCtx-> eip++; /* skip hlt */1944 pCtx->rip++; /* skip hlt */ 1945 1945 goto ResumeExecution; 1946 1946 }
Note:
See TracChangeset
for help on using the changeset viewer.