Changeset 19252 in vbox for trunk/src/VBox/HostDrivers/Support
- Timestamp:
- Apr 29, 2009 9:56:19 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 46655
- Location:
- trunk/src/VBox/HostDrivers/Support
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostDrivers/Support/SUPDrv.c
r18850 r19252 149 149 150 150 #ifdef RT_WITH_W64_UNWIND_HACK 151 DECLASM(int) supdrvNtWrapVMMR0EntryEx(PFNRT pfnVMMR0EntryEx, PVM pVM, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession);151 DECLASM(int) supdrvNtWrapVMMR0EntryEx(PFNRT pfnVMMR0EntryEx, PVM pVM, unsigned idCpu, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession); 152 152 DECLASM(int) supdrvNtWrapVMMR0EntryFast(PFNRT pfnVMMR0EntryFast, PVM pVM, unsigned idCpu, unsigned uOperation); 153 153 DECLASM(void) supdrvNtWrapObjDestructor(PFNRT pfnDestruction, void *pvObj, void *pvUser1, void *pvUser2); … … 1328 1328 if (RT_LIKELY(pDevExt->pfnVMMR0EntryEx)) 1329 1329 #ifdef RT_WITH_W64_UNWIND_HACK 1330 pReq->Hdr.rc = supdrvNtWrapVMMR0EntryEx((PFNRT)pDevExt->pfnVMMR0EntryEx, pReq->u.In.pVMR0, pReq->u.In. uOperation, NULL, pReq->u.In.u64Arg, pSession);1330 pReq->Hdr.rc = supdrvNtWrapVMMR0EntryEx((PFNRT)pDevExt->pfnVMMR0EntryEx, pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, NULL, pReq->u.In.u64Arg, pSession); 1331 1331 #else 1332 pReq->Hdr.rc = pDevExt->pfnVMMR0EntryEx(pReq->u.In.pVMR0, pReq->u.In. uOperation, NULL, pReq->u.In.u64Arg, pSession);1332 pReq->Hdr.rc = pDevExt->pfnVMMR0EntryEx(pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, NULL, pReq->u.In.u64Arg, pSession); 1333 1333 #endif 1334 1334 else … … 1346 1346 if (RT_LIKELY(pDevExt->pfnVMMR0EntryEx)) 1347 1347 #ifdef RT_WITH_W64_UNWIND_HACK 1348 pReq->Hdr.rc = supdrvNtWrapVMMR0EntryEx((PFNRT)pDevExt->pfnVMMR0EntryEx, pReq->u.In.pVMR0, pReq->u.In. uOperation, pVMMReq, pReq->u.In.u64Arg, pSession);1348 pReq->Hdr.rc = supdrvNtWrapVMMR0EntryEx((PFNRT)pDevExt->pfnVMMR0EntryEx, pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, pVMMReq, pReq->u.In.u64Arg, pSession); 1349 1349 #else 1350 pReq->Hdr.rc = pDevExt->pfnVMMR0EntryEx(pReq->u.In.pVMR0, pReq->u.In. uOperation, pVMMReq, pReq->u.In.u64Arg, pSession);1350 pReq->Hdr.rc = pDevExt->pfnVMMR0EntryEx(pReq->u.In.pVMR0, pReq->u.In.idCpu, pReq->u.In.uOperation, pVMMReq, pReq->u.In.u64Arg, pSession); 1351 1351 #endif 1352 1352 else -
trunk/src/VBox/HostDrivers/Support/SUPDrvIOC.h
r18191 r19252 188 188 * and renaming the related IOCtls too. 189 189 */ 190 #define SUPDRV_IOC_VERSION 0x000 a0009190 #define SUPDRV_IOC_VERSION 0x000b0000 191 191 192 192 /** SUP_IOCTL_COOKIE. */ … … 527 527 /** The VM handle. */ 528 528 PVMR0 pVMR0; 529 /** VCPU id. */ 530 uint32_t idCpu; 529 531 /** Which operation to execute. */ 530 532 uint32_t uOperation; 531 #if R0_ARCH_BITS == 64532 /** Alignment. */533 uint32_t u32Reserved;534 #endif535 533 /** Argument to use when no request packet is supplied. */ 536 534 uint64_t u64Arg; -
trunk/src/VBox/HostDrivers/Support/SUPDrvInternal.h
r18479 r19252 570 570 DECLR0CALLBACKMEMBER(void, pfnVMMR0EntryFast, (PVM pVM, unsigned idCpu, unsigned uOperation)); 571 571 /** VMMR0EntryEx() pointer. */ 572 DECLR0CALLBACKMEMBER(int, pfnVMMR0EntryEx, (PVM pVM, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession));572 DECLR0CALLBACKMEMBER(int, pfnVMMR0EntryEx, (PVM pVM, unsigned idCpu, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession)); 573 573 574 574 /** Linked list of loaded code. */ -
trunk/src/VBox/HostDrivers/Support/SUPLib.cpp
r18761 r19252 582 582 583 583 584 SUPR3DECL(int) SUPCallVMMR0Ex(PVMR0 pVMR0, unsigned uOperation, uint64_t u64Arg, PSUPVMMR0REQHDR pReqHdr)584 SUPR3DECL(int) SUPCallVMMR0Ex(PVMR0 pVMR0, unsigned idCpu, unsigned uOperation, uint64_t u64Arg, PSUPVMMR0REQHDR pReqHdr) 585 585 { 586 586 /* … … 609 609 Req.Hdr.rc = VERR_INTERNAL_ERROR; 610 610 Req.u.In.pVMR0 = pVMR0; 611 Req.u.In.idCpu = idCpu; 611 612 Req.u.In.uOperation = uOperation; 612 613 Req.u.In.u64Arg = u64Arg; … … 629 630 pReq->Hdr.rc = VERR_INTERNAL_ERROR; 630 631 pReq->u.In.pVMR0 = pVMR0; 632 pReq->u.In.idCpu = idCpu; 631 633 pReq->u.In.uOperation = uOperation; 632 634 pReq->u.In.u64Arg = u64Arg; … … 643 645 644 646 645 SUPR3DECL(int) SUPCallVMMR0(PVMR0 pVMR0, unsigned uOperation, void *pvArg)647 SUPR3DECL(int) SUPCallVMMR0(PVMR0 pVMR0, unsigned idCpu, unsigned uOperation, void *pvArg) 646 648 { 647 649 /* … … 653 655 ("%#x\n", uOperation), 654 656 VERR_INTERNAL_ERROR); 655 return SUPCallVMMR0Ex(pVMR0, uOperation, (uintptr_t)pvArg, NULL);657 return SUPCallVMMR0Ex(pVMR0, idCpu, uOperation, (uintptr_t)pvArg, NULL); 656 658 } 657 659 -
trunk/src/VBox/HostDrivers/Support/testcase/tstInt.cpp
r14831 r19252 124 124 for (i = cIterations; i > 0; i--) 125 125 { 126 rc = SUPCallVMMR0(pVMR0, VMMR0_DO_SLOW_NOP, NULL);126 rc = SUPCallVMMR0(pVMR0, 0, VMMR0_DO_SLOW_NOP, NULL); 127 127 if (rc != VINF_SUCCESS) 128 128 { … … 174 174 { 175 175 uint64_t OneStartTick = ASMReadTSC(); 176 rc = SUPCallVMMR0Ex(pVMR0, VMMR0_DO_SLOW_NOP, 0, NULL);176 rc = SUPCallVMMR0Ex(pVMR0, 0, VMMR0_DO_SLOW_NOP, 0, NULL); 177 177 uint64_t Ticks = ASMReadTSC() - OneStartTick; 178 178 if (Ticks < MinTicks) -
trunk/src/VBox/HostDrivers/Support/win/SUPDrvA-win.asm
r15838 r19252 170 170 171 171 ;; 172 ; @cproto DECLASM(int) supdrvNtWrapVMMR0EntryEx(PFNRT pfnVMMR0EntryEx, PVM pVM, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession);172 ; @cproto DECLASM(int) supdrvNtWrapVMMR0EntryEx(PFNRT pfnVMMR0EntryEx, PVM pVM, unsigned idCpu, unsigned uOperation, PSUPVMMR0REQHDR pReq, uint64_t u64Arg, PSUPDRVSESSION pSession); 173 173 ; 174 174 ; @param pfnVMMR0EntryEx rcx 175 175 ; @param pVM rdx 176 ; @param uOperation r8 177 ; @param pReq r9 178 ; @param u64Arg [rsp + 28h] / [rbp + 30h] 179 ; @param pSession [rsp + 30h] / [rbp + 38h] 176 ; @param idCpu r8 177 ; @param uOperation r9 178 ; @param pReq [rsp + 28h] / [rbp + 30h] 179 ; @param u64Arg [rsp + 30h] / [rbp + 38h] 180 ; @param pSession [rsp + 38h] / [rbp + 40h] 180 181 ; 181 182 BEGINPROC supdrvNtWrapVMMR0EntryEx … … 190 191 mov r11, [rbp + 38h] 191 192 mov [rsp + 20h], r11 193 mov r11, [rbp + 40h] 194 mov [rsp + 28h], r11 192 195 call rax 193 196
Note:
See TracChangeset
for help on using the changeset viewer.