Changeset 20875 in vbox
- Timestamp:
- Jun 24, 2009 2:29:17 AM (15 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 10 edited
-
VMM.cpp (modified) (28 diffs)
-
VMMGuruMeditation.cpp (modified) (1 diff)
-
VMMInternal.h (modified) (6 diffs)
-
VMMR0/VMMR0.cpp (modified) (7 diffs)
-
VMMR0/VMMR0JmpA-amd64.asm (modified) (5 diffs)
-
VMMR0/VMMR0JmpA-x86.asm (modified) (5 diffs)
-
VMMRZ/VMMRZ.cpp (modified) (1 diff)
-
testcase/tstVMMR0CallHost-1.cpp (modified) (2 diffs)
-
testcase/tstVMStructGC.cpp (modified) (1 diff)
-
testcase/tstVMStructSize.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMM.cpp
r20874 r20875 112 112 static DECLCALLBACK(int) vmmR3Load(PVM pVM, PSSMHANDLE pSSM, uint32_t u32Version); 113 113 static DECLCALLBACK(void) vmmR3YieldEMT(PVM pVM, PTMTIMER pTimer, void *pvUser); 114 static int vmmR3ServiceCall HostRequest(PVM pVM, PVMCPU pVCpu);114 static int vmmR3ServiceCallRing3Request(PVM pVM, PVMCPU pVCpu); 115 115 static DECLCALLBACK(void) vmmR3InfoFF(PVM pVM, PCDBGFINFOHLP pHlp, const char *pszArgs); 116 116 … … 259 259 /* MMHyperR3ToR0 returns R3 when not doing hardware assisted virtualization. */ 260 260 if (!VMMIsHwVirtExtForced(pVM)) 261 pVCpu->vmm.s.Call HostR0JmpBuf.pvSavedStack = NIL_RTR0PTR;261 pVCpu->vmm.s.CallRing3JmpBufR0.pvSavedStack = NIL_RTR0PTR; 262 262 else 263 263 #endif 264 pVCpu->vmm.s.Call HostR0JmpBuf.pvSavedStack = MMHyperR3ToR0(pVM, pVCpu->vmm.s.pbEMTStackR3);264 pVCpu->vmm.s.CallRing3JmpBufR0.pvSavedStack = MMHyperR3ToR0(pVM, pVCpu->vmm.s.pbEMTStackR3); 265 265 pVCpu->vmm.s.pbEMTStackRC = MMHyperR3ToRC(pVM, pVCpu->vmm.s.pbEMTStackR3); 266 266 pVCpu->vmm.s.pbEMTStackBottomRC = pVCpu->vmm.s.pbEMTStackRC + VMM_STACK_SIZE; … … 385 385 STAM_REG(pVM, &pVM->vmm.s.StatRZRetPendingRequest, STAMTYPE_COUNTER, "/VMM/RZRet/PendingRequest", STAMUNIT_OCCURENCES, "Number of VINF_EM_PENDING_REQUEST returns."); 386 386 387 STAM_REG(pVM, &pVM->vmm.s.StatRZRetCall Host,STAMTYPE_COUNTER, "/VMM/RZCallR3/Misc", STAMUNIT_OCCURENCES, "Number of Other ring-3 calls.");387 STAM_REG(pVM, &pVM->vmm.s.StatRZRetCallRing3, STAMTYPE_COUNTER, "/VMM/RZCallR3/Misc", STAMUNIT_OCCURENCES, "Number of Other ring-3 calls."); 388 388 STAM_REG(pVM, &pVM->vmm.s.StatRZCallPDMLock, STAMTYPE_COUNTER, "/VMM/RZCallR3/PDMLock", STAMUNIT_OCCURENCES, "Number of VMMCALLRING3_PDM_LOCK calls."); 389 389 STAM_REG(pVM, &pVM->vmm.s.StatRZCallPDMQueueFlush, STAMTYPE_COUNTER, "/VMM/RZCallR3/PDMQueueFlush", STAMUNIT_OCCURENCES, "Number of VMMCALLRING3_PDM_QUEUE_FLUSH calls."); … … 400 400 for (VMCPUID i = 0; i < pVM->cCPUs; i++) 401 401 { 402 STAMR3RegisterF(pVM, &pVM->aCpus[i].vmm.s.Call HostR0JmpBuf.cbUsedMax, STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES, "Max amount of stack used.", "/VMM/Stack/CPU%u/Max", i);403 STAMR3RegisterF(pVM, &pVM->aCpus[i].vmm.s.Call HostR0JmpBuf.cbUsedAvg, STAMTYPE_U32, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES, "Average stack usage.", "/VMM/Stack/CPU%u/Avg", i);404 STAMR3RegisterF(pVM, &pVM->aCpus[i].vmm.s.Call HostR0JmpBuf.cUsedTotal, STAMTYPE_U64, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Number of stack usages.", "/VMM/Stack/CPU%u/Uses", i);402 STAMR3RegisterF(pVM, &pVM->aCpus[i].vmm.s.CallRing3JmpBufR0.cbUsedMax, STAMTYPE_U32_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES, "Max amount of stack used.", "/VMM/Stack/CPU%u/Max", i); 403 STAMR3RegisterF(pVM, &pVM->aCpus[i].vmm.s.CallRing3JmpBufR0.cbUsedAvg, STAMTYPE_U32, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES, "Average stack usage.", "/VMM/Stack/CPU%u/Avg", i); 404 STAMR3RegisterF(pVM, &pVM->aCpus[i].vmm.s.CallRing3JmpBufR0.cUsedTotal, STAMTYPE_U64, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, "Number of stack usages.", "/VMM/Stack/CPU%u/Uses", i); 405 405 } 406 406 #endif … … 522 522 if (rc != VINF_VMM_CALL_HOST) 523 523 break; 524 rc = vmmR3ServiceCall HostRequest(pVM, pVCpu);524 rc = vmmR3ServiceCallRing3Request(pVM, pVCpu); 525 525 if (RT_FAILURE(rc) || (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST)) 526 526 break; … … 599 599 if (rc != VINF_VMM_CALL_HOST) 600 600 break; 601 rc = vmmR3ServiceCall HostRequest(pVM, pVCpu);601 rc = vmmR3ServiceCallRing3Request(pVM, pVCpu); 602 602 if (RT_FAILURE(rc) || (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST)) 603 603 break; … … 649 649 if (rc != VINF_VMM_CALL_HOST) 650 650 break; 651 rc = vmmR3ServiceCall HostRequest(pVM, pVCpu);651 rc = vmmR3ServiceCallRing3Request(pVM, pVCpu); 652 652 if (RT_FAILURE(rc) || (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST)) 653 653 break; … … 1172 1172 return rc; 1173 1173 } 1174 rc = vmmR3ServiceCall HostRequest(pVM, pVCpu);1174 rc = vmmR3ServiceCallRing3Request(pVM, pVCpu); 1175 1175 if (RT_FAILURE(rc)) 1176 1176 return rc; … … 1218 1218 return rc; 1219 1219 } 1220 rc = vmmR3ServiceCall HostRequest(pVM, pVCpu);1220 rc = vmmR3ServiceCallRing3Request(pVM, pVCpu); 1221 1221 if (RT_FAILURE(rc)) 1222 1222 return rc; … … 1628 1628 AssertReturn(pVCpu, VERR_INVALID_PARAMETER); 1629 1629 1630 RTHCUINTPTR offset = pVCpu->vmm.s.Call HostR0JmpBuf.SpCheck - pAddress;1631 if (offset >= pVCpu->vmm.s.Call HostR0JmpBuf.cbSavedStack)1630 RTHCUINTPTR offset = pVCpu->vmm.s.CallRing3JmpBufR0.SpCheck - pAddress; 1631 if (offset >= pVCpu->vmm.s.CallRing3JmpBufR0.cbSavedStack) 1632 1632 return VERR_INVALID_POINTER; 1633 1633 1634 memcpy(pvBuf, pVCpu->vmm.s.pbEMTStackR3 + pVCpu->vmm.s.Call HostR0JmpBuf.cbSavedStack - offset, cbRead);1634 memcpy(pvBuf, pVCpu->vmm.s.pbEMTStackR3 + pVCpu->vmm.s.CallRing3JmpBufR0.cbSavedStack - offset, cbRead); 1635 1635 return VINF_SUCCESS; 1636 1636 } … … 1725 1725 return rc; 1726 1726 } 1727 rc = vmmR3ServiceCall HostRequest(pVM, pVCpu);1727 rc = vmmR3ServiceCallRing3Request(pVM, pVCpu); 1728 1728 if (RT_FAILURE(rc)) 1729 1729 return rc; … … 1768 1768 if (rc != VINF_VMM_CALL_HOST) 1769 1769 break; 1770 rc = vmmR3ServiceCall HostRequest(pVM, pVCpu);1770 rc = vmmR3ServiceCallRing3Request(pVM, pVCpu); 1771 1771 if (RT_FAILURE(rc) || (rc >= VINF_EM_FIRST && rc <= VINF_EM_LAST)) 1772 1772 break; … … 1833 1833 return rc; 1834 1834 } 1835 rc = vmmR3ServiceCall HostRequest(pVM, pVCpu);1835 rc = vmmR3ServiceCallRing3Request(pVM, pVCpu); 1836 1836 if (RT_FAILURE(rc)) 1837 1837 return rc; … … 1848 1848 * @remark Careful with critsects. 1849 1849 */ 1850 static int vmmR3ServiceCall HostRequest(PVM pVM, PVMCPU pVCpu)1850 static int vmmR3ServiceCallRing3Request(PVM pVM, PVMCPU pVCpu) 1851 1851 { 1852 1852 /* … … 1857 1857 PDMCritSectFF(pVCpu); 1858 1858 1859 switch (pVCpu->vmm.s.enmCall HostOperation)1859 switch (pVCpu->vmm.s.enmCallRing3Operation) 1860 1860 { 1861 1861 /* … … 1864 1864 case VMMCALLRING3_PDM_LOCK: 1865 1865 { 1866 pVCpu->vmm.s.rcCall Host= PDMR3LockCall(pVM);1866 pVCpu->vmm.s.rcCallRing3 = PDMR3LockCall(pVM); 1867 1867 break; 1868 1868 } … … 1874 1874 { 1875 1875 PDMR3QueueFlushWorker(pVM, NULL); 1876 pVCpu->vmm.s.rcCall Host= VINF_SUCCESS;1876 pVCpu->vmm.s.rcCallRing3 = VINF_SUCCESS; 1877 1877 break; 1878 1878 } … … 1883 1883 case VMMCALLRING3_PGM_POOL_GROW: 1884 1884 { 1885 pVCpu->vmm.s.rcCall Host= PGMR3PoolGrow(pVM);1885 pVCpu->vmm.s.rcCallRing3 = PGMR3PoolGrow(pVM); 1886 1886 break; 1887 1887 } … … 1892 1892 case VMMCALLRING3_PGM_MAP_CHUNK: 1893 1893 { 1894 pVCpu->vmm.s.rcCall Host = PGMR3PhysChunkMap(pVM, pVCpu->vmm.s.u64CallHostArg);1894 pVCpu->vmm.s.rcCallRing3 = PGMR3PhysChunkMap(pVM, pVCpu->vmm.s.u64CallRing3Arg); 1895 1895 break; 1896 1896 } … … 1901 1901 case VMMCALLRING3_PGM_ALLOCATE_HANDY_PAGES: 1902 1902 { 1903 pVCpu->vmm.s.rcCall Host= PGMR3PhysAllocateHandyPages(pVM);1903 pVCpu->vmm.s.rcCallRing3 = PGMR3PhysAllocateHandyPages(pVM); 1904 1904 break; 1905 1905 } … … 1910 1910 case VMMCALLRING3_PGM_LOCK: 1911 1911 { 1912 pVCpu->vmm.s.rcCall Host= PGMR3LockCall(pVM);1912 pVCpu->vmm.s.rcCallRing3 = PGMR3LockCall(pVM); 1913 1913 break; 1914 1914 } … … 1919 1919 case VMMCALLRING3_MMHYPER_LOCK: 1920 1920 { 1921 pVCpu->vmm.s.rcCall Host= MMR3LockCall(pVM);1921 pVCpu->vmm.s.rcCallRing3 = MMR3LockCall(pVM); 1922 1922 break; 1923 1923 } … … 1929 1929 { 1930 1930 REMR3ReplayHandlerNotifications(pVM); 1931 pVCpu->vmm.s.rcCall Host= VINF_SUCCESS;1931 pVCpu->vmm.s.rcCallRing3 = VINF_SUCCESS; 1932 1932 break; 1933 1933 } … … 1938 1938 */ 1939 1939 case VMMCALLRING3_VMM_LOGGER_FLUSH: 1940 pVCpu->vmm.s.rcCall Host= VINF_SUCCESS;1940 pVCpu->vmm.s.rcCallRing3 = VINF_SUCCESS; 1941 1941 LogAlways(("*FLUSH*\n")); 1942 1942 break; … … 1947 1947 case VMMCALLRING3_VM_SET_ERROR: 1948 1948 VMR3SetErrorWorker(pVM); 1949 pVCpu->vmm.s.rcCall Host= VINF_SUCCESS;1949 pVCpu->vmm.s.rcCallRing3 = VINF_SUCCESS; 1950 1950 break; 1951 1951 … … 1954 1954 */ 1955 1955 case VMMCALLRING3_VM_SET_RUNTIME_ERROR: 1956 pVCpu->vmm.s.rcCall Host= VMR3SetRuntimeErrorWorker(pVM);1956 pVCpu->vmm.s.rcCallRing3 = VMR3SetRuntimeErrorWorker(pVM); 1957 1957 break; 1958 1958 … … 1962 1962 */ 1963 1963 case VMMCALLRING3_VM_R0_ASSERTION: 1964 pVCpu->vmm.s.enmCall HostOperation = VMMCALLRING3_INVALID;1965 pVCpu->vmm.s.Call HostR0JmpBuf.fInRing3Call = false;1964 pVCpu->vmm.s.enmCallRing3Operation = VMMCALLRING3_INVALID; 1965 pVCpu->vmm.s.CallRing3JmpBufR0.fInRing3Call = false; 1966 1966 #ifdef RT_ARCH_X86 1967 pVCpu->vmm.s.Call HostR0JmpBuf.eip = 0;1967 pVCpu->vmm.s.CallRing3JmpBufR0.eip = 0; 1968 1968 #else 1969 pVCpu->vmm.s.Call HostR0JmpBuf.rip = 0;1969 pVCpu->vmm.s.CallRing3JmpBufR0.rip = 0; 1970 1970 #endif 1971 1971 LogRel((pVM->vmm.s.szRing0AssertMsg1)); … … 1977 1977 */ 1978 1978 case VMMCALLRING3_VM_R0_PREEMPT: 1979 pVCpu->vmm.s.rcCall Host= VINF_SUCCESS;1979 pVCpu->vmm.s.rcCallRing3 = VINF_SUCCESS; 1980 1980 break; 1981 1981 1982 1982 default: 1983 AssertMsgFailed(("enmCall HostOperation=%d\n", pVCpu->vmm.s.enmCallHostOperation));1983 AssertMsgFailed(("enmCallRing3Operation=%d\n", pVCpu->vmm.s.enmCallRing3Operation)); 1984 1984 return VERR_INTERNAL_ERROR; 1985 1985 } 1986 1986 1987 pVCpu->vmm.s.enmCall HostOperation = VMMCALLRING3_INVALID;1987 pVCpu->vmm.s.enmCallRing3Operation = VMMCALLRING3_INVALID; 1988 1988 return VINF_SUCCESS; 1989 1989 } -
trunk/src/VBox/VMM/VMMGuruMeditation.cpp
r20871 r20875 312 312 eip.fFlags = DBGFADDRESS_FLAGS_RING0 | DBGFADDRESS_FLAGS_VALID; 313 313 #if HC_ARCH_BITS == 64 314 eip.FlatPtr = eip.off = pVCpu->vmm.s.Call HostR0JmpBuf.rip;314 eip.FlatPtr = eip.off = pVCpu->vmm.s.CallRing3JmpBufR0.rip; 315 315 #else 316 eip.FlatPtr = eip.off = pVCpu->vmm.s.Call HostR0JmpBuf.eip;316 eip.FlatPtr = eip.off = pVCpu->vmm.s.CallRing3JmpBufR0.eip; 317 317 #endif 318 318 eip.Sel = DBGF_SEL_FLAT; 319 319 ebp.fFlags = DBGFADDRESS_FLAGS_RING0 | DBGFADDRESS_FLAGS_VALID; 320 ebp.FlatPtr = ebp.off = pVCpu->vmm.s.Call HostR0JmpBuf.SavedEbp;320 ebp.FlatPtr = ebp.off = pVCpu->vmm.s.CallRing3JmpBufR0.SavedEbp; 321 321 ebp.Sel = DBGF_SEL_FLAT; 322 322 esp.fFlags = DBGFADDRESS_FLAGS_RING0 | DBGFADDRESS_FLAGS_VALID; 323 323 esp.Sel = DBGF_SEL_FLAT; 324 esp.FlatPtr = esp.off = pVCpu->vmm.s.Call HostR0JmpBuf.SavedEsp;324 esp.FlatPtr = esp.off = pVCpu->vmm.s.CallRing3JmpBufR0.SavedEsp; 325 325 326 326 rc2 = DBGFR3StackWalkBeginEx(pVM, pVCpu->idCpu, DBGFCODETYPE_RING0, &ebp, &esp, &eip, -
trunk/src/VBox/VMM/VMMInternal.h
r20874 r20875 349 349 STAMCOUNTER StatRZRetTimerPending; 350 350 STAMCOUNTER StatRZRetInterruptPending; 351 STAMCOUNTER StatRZRetCall Host;351 STAMCOUNTER StatRZRetCallRing3; 352 352 STAMCOUNTER StatRZRetPATMDuplicateFn; 353 353 STAMCOUNTER StatRZRetPGMChangeMode; … … 406 406 uint32_t cCallRing3Disabled; 407 407 /** The pending operation. */ 408 VMMCALLRING3 enmCallHostOperation;408 VMMCALLRING3 enmCallRing3Operation; 409 409 /** The result of the last operation. */ 410 int32_t rcCall Host;410 int32_t rcCallRing3; 411 411 #if HC_ARCH_BITS == 64 412 412 uint32_t padding; 413 413 #endif 414 414 /** The argument to the operation. */ 415 uint64_t u64Call HostArg;415 uint64_t u64CallRing3Arg; 416 416 /** The Ring-0 jmp buffer. */ 417 VMMR0JMPBUF Call HostR0JmpBuf;417 VMMR0JMPBUF CallRing3JmpBufR0; 418 418 /** @} */ 419 419 … … 499 499 500 500 /** 501 * Callback function for vmmR0Call HostSetJmp.501 * Callback function for vmmR0CallRing3SetJmp. 502 502 * 503 503 * @returns VBox status code. … … 515 515 * argument. This has to do with resuming code and the stack frame of the caller. 516 516 * 517 * @returns VINF_SUCCESS on success or whatever is passed to vmmR0Call HostLongJmp.517 * @returns VINF_SUCCESS on success or whatever is passed to vmmR0CallRing3LongJmp. 518 518 * @param pJmpBuf The jmp_buf to set. 519 519 * @param pfn The function to be called when not resuming.. 520 520 * @param pVM The argument of that function. 521 521 */ 522 DECLASM(int) vmmR0Call HostSetJmp(PVMMR0JMPBUF pJmpBuf, PFNVMMR0SETJMP pfn, PVM pVM, PVMCPU pVCpu);523 524 /** 525 * Callback function for vmmR0Call HostSetJmpEx.522 DECLASM(int) vmmR0CallRing3SetJmp(PVMMR0JMPBUF pJmpBuf, PFNVMMR0SETJMP pfn, PVM pVM, PVMCPU pVCpu); 523 524 /** 525 * Callback function for vmmR0CallRing3SetJmpEx. 526 526 * 527 527 * @returns VBox status code. … … 533 533 534 534 /** 535 * Same as vmmR0Call HostSetJmp except for the function signature.536 * 537 * @returns VINF_SUCCESS on success or whatever is passed to vmmR0Call HostLongJmp.535 * Same as vmmR0CallRing3SetJmp except for the function signature. 536 * 537 * @returns VINF_SUCCESS on success or whatever is passed to vmmR0CallRing3LongJmp. 538 538 * @param pJmpBuf The jmp_buf to set. 539 539 * @param pfn The function to be called when not resuming.. 540 540 * @param pvUser The argument of that function. 541 541 */ 542 DECLASM(int) vmmR0Call HostSetJmpEx(PVMMR0JMPBUF pJmpBuf, PFNVMMR0SETJMPEX pfn, void *pvUser);542 DECLASM(int) vmmR0CallRing3SetJmpEx(PVMMR0JMPBUF pJmpBuf, PFNVMMR0SETJMPEX pfn, void *pvUser); 543 543 544 544 … … 551 551 * @param rc The return code. 552 552 */ 553 DECLASM(int) vmmR0Call HostLongJmp(PVMMR0JMPBUF pJmpBuf, int rc);553 DECLASM(int) vmmR0CallRing3LongJmp(PVMMR0JMPBUF pJmpBuf, int rc); 554 554 555 555 /** -
trunk/src/VBox/VMM/VMMR0/VMMR0.cpp
r20874 r20875 424 424 break; 425 425 case VINF_VMM_CALL_HOST: 426 switch (pVCpu->vmm.s.enmCall HostOperation)426 switch (pVCpu->vmm.s.enmCallRing3Operation) 427 427 { 428 428 case VMMCALLRING3_PDM_LOCK: … … 458 458 case VMMCALLRING3_VM_R0_ASSERTION: 459 459 default: 460 STAM_COUNTER_INC(&pVM->vmm.s.StatRZRetCall Host);460 STAM_COUNTER_INC(&pVM->vmm.s.StatRZRetCallRing3); 461 461 break; 462 462 } … … 628 628 if (RT_SUCCESS(rc)) 629 629 { 630 rc = vmmR0Call HostSetJmp(&pVCpu->vmm.s.CallHostR0JmpBuf, HWACCMR0RunGuestCode, pVM, pVCpu); /* this may resume code. */630 rc = vmmR0CallRing3SetJmp(&pVCpu->vmm.s.CallRing3JmpBufR0, HWACCMR0RunGuestCode, pVM, pVCpu); /* this may resume code. */ 631 631 int rc2 = HWACCMR0Leave(pVM, pVCpu); 632 632 AssertRC(rc2); … … 1110 1110 PVMCPU pVCpu = &pVM->aCpus[idCpu]; 1111 1111 1112 if (!pVCpu->vmm.s.Call HostR0JmpBuf.pvSavedStack)1112 if (!pVCpu->vmm.s.CallRing3JmpBufR0.pvSavedStack) 1113 1113 break; 1114 1114 … … 1121 1121 Args.u64Arg = u64Arg; 1122 1122 Args.pSession = pSession; 1123 return vmmR0Call HostSetJmpEx(&pVCpu->vmm.s.CallHostR0JmpBuf, vmmR0EntryExWrapper, &Args);1123 return vmmR0CallRing3SetJmpEx(&pVCpu->vmm.s.CallRing3JmpBufR0, vmmR0EntryExWrapper, &Args); 1124 1124 } 1125 1125 … … 1173 1173 */ 1174 1174 # ifdef RT_ARCH_X86 1175 if ( !pVCpu->vmm.s.Call HostR0JmpBuf.eip1176 || pVCpu->vmm.s.Call HostR0JmpBuf.fInRing3Call)1175 if ( !pVCpu->vmm.s.CallRing3JmpBufR0.eip 1176 || pVCpu->vmm.s.CallRing3JmpBufR0.fInRing3Call) 1177 1177 # else 1178 if ( !pVCpu->vmm.s.Call HostR0JmpBuf.rip1179 || pVCpu->vmm.s.Call HostR0JmpBuf.fInRing3Call)1178 if ( !pVCpu->vmm.s.CallRing3JmpBufR0.rip 1179 || pVCpu->vmm.s.CallRing3JmpBufR0.fInRing3Call) 1180 1180 # endif 1181 1181 { … … 1265 1265 1266 1266 #ifdef RT_ARCH_X86 1267 if ( pVCpu->vmm.s.Call HostR0JmpBuf.eip1268 && !pVCpu->vmm.s.Call HostR0JmpBuf.fInRing3Call)1267 if ( pVCpu->vmm.s.CallRing3JmpBufR0.eip 1268 && !pVCpu->vmm.s.CallRing3JmpBufR0.fInRing3Call) 1269 1269 #else 1270 if ( pVCpu->vmm.s.Call HostR0JmpBuf.rip1271 && !pVCpu->vmm.s.Call HostR0JmpBuf.fInRing3Call)1270 if ( pVCpu->vmm.s.CallRing3JmpBufR0.rip 1271 && !pVCpu->vmm.s.CallRing3JmpBufR0.fInRing3Call) 1272 1272 #endif 1273 1273 { -
trunk/src/VBox/VMM/VMMR0/VMMR0JmpA-amd64.asm
r20874 r20875 50 50 ; argument. This has to do with resuming code and the stack frame of the caller. 51 51 ; 52 ; @returns VINF_SUCCESS on success or whatever is passed to vmmR0Call HostLongJmp.52 ; @returns VINF_SUCCESS on success or whatever is passed to vmmR0CallRing3LongJmp. 53 53 ; @param pJmpBuf msc:rcx gcc:rdi x86:[esp+0x04] Our jmp_buf. 54 54 ; @param pfn msc:rdx gcc:rsi x86:[esp+0x08] The function to be called when not resuming. … … 56 56 ; @param pvUser2 msc:r9 gcc:rcx x86:[esp+0x10] The argument of that function. 57 57 ; 58 BEGINPROC vmmR0Call HostSetJmp59 GLOBALNAME vmmR0Call HostSetJmpEx58 BEGINPROC vmmR0CallRing3SetJmp 59 GLOBALNAME vmmR0CallRing3SetJmpEx 60 60 ; 61 61 ; Save the registers. … … 236 236 xor eax, eax ; VINF_SUCCESS 237 237 ret 238 ENDPROC vmmR0Call HostSetJmp238 ENDPROC vmmR0CallRing3SetJmp 239 239 240 240 … … 246 246 ; @param rc msc:rdx gcc:rsi x86:[ebp+c] The return code. 247 247 ; 248 BEGINPROC vmmR0Call HostLongJmp248 BEGINPROC vmmR0CallRing3LongJmp 249 249 ; 250 250 ; Save the registers on the stack. … … 363 363 leave 364 364 ret 365 ENDPROC vmmR0Call HostLongJmp365 ENDPROC vmmR0CallRing3LongJmp 366 366 367 367 -
trunk/src/VBox/VMM/VMMR0/VMMR0JmpA-x86.asm
r20874 r20875 50 50 ; argument. This has to do with resuming code and the stack frame of the caller. 51 51 ; 52 ; @returns VINF_SUCCESS on success or whatever is passed to vmmR0Call HostLongJmp.52 ; @returns VINF_SUCCESS on success or whatever is passed to vmmR0CallRing3LongJmp. 53 53 ; @param pJmpBuf msc:rcx gcc:rdi x86:[esp+0x04] Our jmp_buf. 54 54 ; @param pfn msc:rdx gcc:rsi x86:[esp+0x08] The function to be called when not resuming. … … 56 56 ; @param pvUser2 msc:r9 gcc:rcx x86:[esp+0x10] The argument of that function. 57 57 ; 58 BEGINPROC vmmR0Call HostSetJmp59 GLOBALNAME vmmR0Call HostSetJmpEx58 BEGINPROC vmmR0CallRing3SetJmp 59 GLOBALNAME vmmR0CallRing3SetJmpEx 60 60 ; 61 61 ; Save the registers. … … 270 270 xor eax, eax ; VINF_SUCCESS 271 271 ret 272 ENDPROC vmmR0Call HostSetJmp272 ENDPROC vmmR0CallRing3SetJmp 273 273 274 274 … … 280 280 ; @param rc msc:rdx gcc:rsi x86:[ebp+c] The return code. 281 281 ; 282 BEGINPROC vmmR0Call HostLongJmp282 BEGINPROC vmmR0CallRing3LongJmp 283 283 ; 284 284 ; Save the registers on the stack. … … 373 373 leave 374 374 ret 375 ENDPROC vmmR0Call HostLongJmp375 ENDPROC vmmR0CallRing3LongJmp 376 376 377 377 -
trunk/src/VBox/VMM/VMMRZ/VMMRZ.cpp
r20874 r20875 82 82 */ 83 83 /** @todo profile this! */ 84 pVCpu->vmm.s.enmCall HostOperation = enmOperation;85 pVCpu->vmm.s.u64Call HostArg = uArg;86 pVCpu->vmm.s.rcCall Host= VERR_INTERNAL_ERROR;84 pVCpu->vmm.s.enmCallRing3Operation = enmOperation; 85 pVCpu->vmm.s.u64CallRing3Arg = uArg; 86 pVCpu->vmm.s.rcCallRing3 = VERR_INTERNAL_ERROR; 87 87 #ifdef IN_RC 88 88 pVM->vmm.s.pfnGuestToHostRC(VINF_VMM_CALL_HOST); 89 89 #else 90 int rc = vmmR0Call HostLongJmp(&pVCpu->vmm.s.CallHostR0JmpBuf, VINF_VMM_CALL_HOST);90 int rc = vmmR0CallRing3LongJmp(&pVCpu->vmm.s.CallRing3JmpBufR0, VINF_VMM_CALL_HOST); 91 91 if (RT_FAILURE(rc)) 92 92 return rc; 93 93 #endif 94 return pVCpu->vmm.s.rcCall Host;94 return pVCpu->vmm.s.rcCallRing3; 95 95 } 96 96 -
trunk/src/VBox/VMM/testcase/tstVMMR0CallHost-1.cpp
r20794 r20875 80 80 { 81 81 g_cJmps++; 82 int rc = vmmR0Call HostLongJmp(&g_Jmp, 42);82 int rc = vmmR0CallRing3LongJmp(&g_Jmp, 42); 83 83 if (!rc) 84 84 return i + 10000; … … 118 118 for (int i = iFrom, iItr = 0; i != iTo; i += iInc, iItr++) 119 119 { 120 int rc = vmmR0Call HostSetJmp(&g_Jmp, (PFNVMMR0SETJMP)tst2, (PVM)i, 0);120 int rc = vmmR0CallRing3SetJmp(&g_Jmp, (PFNVMMR0SETJMP)tst2, (PVM)i, 0); 121 121 RTTESTI_CHECK_MSG_RETV(rc == 0 || rc == 42, ("i=%d rc=%d setjmp; cbFoo=%#x cbFooUsed=%#x\n", i, rc, g_cbFoo, g_cbFooUsed)); 122 122 -
trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp
r20871 r20875 933 933 #endif 934 934 GEN_CHECK_OFF(VMMCPU, cCallRing3Disabled); 935 GEN_CHECK_OFF(VMMCPU, enmCall HostOperation);936 GEN_CHECK_OFF(VMMCPU, rcCall Host);937 GEN_CHECK_OFF(VMMCPU, u64Call HostArg);938 GEN_CHECK_OFF(VMMCPU, Call HostR0JmpBuf);939 GEN_CHECK_OFF(VMMCPU, Call HostR0JmpBuf.SpCheck);940 GEN_CHECK_OFF(VMMCPU, Call HostR0JmpBuf.SpResume);935 GEN_CHECK_OFF(VMMCPU, enmCallRing3Operation); 936 GEN_CHECK_OFF(VMMCPU, rcCallRing3); 937 GEN_CHECK_OFF(VMMCPU, u64CallRing3Arg); 938 GEN_CHECK_OFF(VMMCPU, CallRing3JmpBufR0); 939 GEN_CHECK_OFF(VMMCPU, CallRing3JmpBufR0.SpCheck); 940 GEN_CHECK_OFF(VMMCPU, CallRing3JmpBufR0.SpResume); 941 941 942 942 GEN_CHECK_SIZE(RTPINGPONG); -
trunk/src/VBox/VMM/testcase/tstVMStructSize.cpp
r20784 r20875 196 196 CHECK_MEMBER_ALIGNMENT(VM, cpum.s.GuestEntry, 64); 197 197 198 CHECK_MEMBER_ALIGNMENT(VMCPU, vmm.s.u64Call HostArg, 8);199 CHECK_MEMBER_ALIGNMENT(VMCPU, vmm.s.Call HostR0JmpBuf, 8);198 CHECK_MEMBER_ALIGNMENT(VMCPU, vmm.s.u64CallRing3Arg, 8); 199 CHECK_MEMBER_ALIGNMENT(VMCPU, vmm.s.CallRing3JmpBufR0, 8); 200 200 CHECK_MEMBER_ALIGNMENT(VM, vmm.s.u64LastYield, 8); 201 201 CHECK_MEMBER_ALIGNMENT(VM, vmm.s.StatRunRC, 8);
Note:
See TracChangeset
for help on using the changeset viewer.

