Changeset 19468 in vbox for trunk/src/VBox/VMM
- Timestamp:
- May 7, 2009 9:03:15 AM (16 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PDMDevMiscHlp.cpp
r19456 r19468 232 232 233 233 /** @copydoc PDMAPICHLPR3::pfnSendSipi */ 234 static DECLCALLBACK(void) pdmR3ApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, int iVector) /** @todo why signed? */ 235 { 236 PDMDEV_ASSERT_DEVINS(pDevIns); 237 VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3); 238 239 PVM pVM = pDevIns->Internal.s.pVMR3; 240 PVMCPU pCpu = VMMGetCpuById(pVM, idCpu); 241 CPUMSetGuestCS(pCpu, iVector * 0x100); 242 CPUMSetGuestEIP(pCpu, 0); 243 /** @todo: how do I unhalt VCPU? 244 * bird: See VMMSendSipi. */ 245 234 static DECLCALLBACK(void) pdmR3ApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, uint32_t uVector) 235 { 236 PDMDEV_ASSERT_DEVINS(pDevIns); 237 VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3); 238 VMMR3SendSipi(pDevIns->Internal.s.pVMR3, idCpu, uVector); 246 239 } 247 240 -
trunk/src/VBox/VMM/VMMAll/VMMAll.cpp
r19450 r19468 99 99 # endif 100 100 } 101 #endif /* IN_RING3 */102 103 101 104 102 /** … … 108 106 * @param pVM The VM to operate on. 109 107 * @param idCpu Virtual CPU to perform SIPI on 110 * @param iVector SIPI vector111 */ 112 VMM DECL(void) VMMSendSipi(PVM pVM, VMCPUID idCpu, int iVector) /** @todo why is iVector signed? */108 * @param uVector SIPI vector 109 */ 110 VMMR3DECL(void) VMMR3SendSipi(PVM pVM, VMCPUID idCpu, uint32_t uVector) 113 111 { 114 112 AssertReturnVoid(idCpu < pVM->cCPUs); 115 113 116 #ifdef IN_RING3117 114 PVMREQ pReq; 118 115 int rc = VMR3ReqCallU(pVM->pUVM, idCpu, &pReq, RT_INDEFINITE_WAIT, 0, 119 (PFNRT)vmmR3SendSipi, 3, pVM, idCpu, (uint32_t)iVector);116 (PFNRT)vmmR3SendSipi, 3, pVM, idCpu, uVector); 120 117 AssertRC(rc); 121 118 VMR3ReqFree(pReq); 122 #else 123 AssertMsgFailed(("has to be done in ring-3, fix the code.\n")); 124 #endif 125 } 119 } 120 #endif /* IN_RING3 */ 126 121 127 122 -
trunk/src/VBox/VMM/VMMGC/PDMGCDevice.cpp
r19447 r19468 92 92 static DECLCALLBACK(void) pdmRCApicHlp_Unlock(PPDMDEVINS pDevIns); 93 93 static DECLCALLBACK(VMCPUID) pdmRCApicHlp_GetCpuId(PPDMDEVINS pDevIns); 94 static DECLCALLBACK(void) pdmRCApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, int iVector);95 94 /** @} */ 96 95 … … 168 167 pdmRCApicHlp_Unlock, 169 168 pdmRCApicHlp_GetCpuId, 170 pdmRCApicHlp_SendSipi,171 169 PDM_APICHLPRC_VERSION 172 170 }; … … 490 488 return VMMGetCpuId(pDevIns->Internal.s.pVMRC); 491 489 } 492 493 494 /** @copydoc PDMAPICHLPRC::pfnSendSipi */495 static DECLCALLBACK(void) pdmRCApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, int iVector)496 {497 /* we shall never send a SIPI in raw mode */498 AssertFailed();499 }500 501 502 503 490 504 491 /** @copydoc PDMIOAPICHLPRC::pfnApicBusDeliver */ -
trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp
r19446 r19468 94 94 static DECLCALLBACK(void) pdmR0ApicHlp_Unlock(PPDMDEVINS pDevIns); 95 95 static DECLCALLBACK(VMCPUID) pdmR0ApicHlp_GetCpuId(PPDMDEVINS pDevIns); 96 static DECLCALLBACK(void) pdmR0ApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, int iVector);97 96 /** @} */ 98 97 … … 171 170 pdmR0ApicHlp_Unlock, 172 171 pdmR0ApicHlp_GetCpuId, 173 pdmR0ApicHlp_SendSipi,174 172 PDM_APICHLPR0_VERSION 175 173 }; … … 504 502 return VMMGetCpuId(pDevIns->Internal.s.pVMR0); 505 503 } 506 507 508 /** @copydoc PDMAPICHLPR0::pfnSendSipi */509 static DECLCALLBACK(void) pdmR0ApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, int iVector)510 {511 PDMDEV_ASSERT_DEVINS(pDevIns);512 return VMMSendSipi(pDevIns->Internal.s.pVMR0, idCpu, iVector);513 }514 515 516 517 518 504 519 505 /** @copydoc PDMIOAPICHLPR0::pfnApicBusDeliver */
Note:
See TracChangeset
for help on using the changeset viewer.