Changeset 19437 in vbox for trunk/src/VBox
- Timestamp:
- May 6, 2009 2:34:05 PM (16 years ago)
- Location:
- trunk/src/VBox
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/DevAPIC.cpp
r17968 r19437 363 363 getCpuFromLapic(dev, s)); 364 364 } 365 366 DECLINLINE(void) cpuSendSipi(APICDeviceInfo* dev, APICState *s, int vector) 367 { 368 Log2(("apic: send SIPI vector=%d\n", vector)); 369 dev->CTX_SUFF(pApicHlp)->pfnSendSipi(dev->CTX_SUFF(pDevIns), 370 getCpuFromLapic(dev, s), 371 vector); 372 } 373 374 365 375 366 376 DECLINLINE(uint32_t) getApicEnableBits(APICDeviceInfo* dev) … … 1081 1091 /** @todo: init CPUs */ 1082 1092 LogRel(("[SMP] apic_startup: %d on CPUs %d\n", vector_num, s->id)); 1093 cpuSendSipi(dev, s, vector_num); 1083 1094 #endif 1084 1095 } -
trunk/src/VBox/VMM/PDMDevMiscHlp.cpp
r19400 r19437 230 230 } 231 231 232 /** @copydoc PDMAPICHLPR3::pfnSendSipi */ 233 static DECLCALLBACK(void) pdmR3ApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, int iVector) 234 { 235 PDMDEV_ASSERT_DEVINS(pDevIns); 236 VM_ASSERT_EMT(pDevIns->Internal.s.pVMR3); 237 238 PVM pVM = pDevIns->Internal.s.pVMR3; 239 PVMCPU pCpu = VMMGetCpuById(pVM, idCpu); 240 CPUMSetGuestCS(pCpu, iVector * 0x100); 241 CPUMSetGuestEIP(pCpu, 0); 242 /** @todo: how do I unhalt VCPU? */ 243 } 232 244 233 245 /** @copydoc PDMAPICHLPR3::pfnGetRCHelpers */ … … 273 285 pdmR3ApicHlp_Unlock, 274 286 pdmR3ApicHlp_GetCpuId, 287 pdmR3ApicHlp_SendSipi, 275 288 pdmR3ApicHlp_GetRCHelpers, 276 289 pdmR3ApicHlp_GetR0Helpers, -
trunk/src/VBox/VMM/VMMAll/VMMAll.cpp
r19434 r19437 73 73 } 74 74 75 76 /** 77 * Sends SIPI to the virtual CPU by setting CS:EIP into vector-dependent state 78 * and unhalting processor 79 * 80 * @param pVM The VM to operate on. 81 * @param idCpu Virtual CPU to perform SIPI on 82 * @param iVector SIPI vector 83 */ 84 VMMDECL(void) VMMSendSipi(PVM pVM, VMCPUID idCpu, int iVector) 85 { 86 PVMCPU pCpu = VMMGetCpuById(pVM, idCpu); 87 CPUMSetGuestCS(pCpu, iVector * 0x100); 88 CPUMSetGuestEIP(pCpu, 0); 89 /** @todo: how do I unhalt VCPU? */ 90 } 75 91 76 92 /** -
trunk/src/VBox/VMM/VMMGC/PDMGCDevice.cpp
r19141 r19437 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); 94 95 /** @} */ 95 96 … … 167 168 pdmRCApicHlp_Unlock, 168 169 pdmRCApicHlp_GetCpuId, 170 pdmRCApicHlp_SendSipi, 169 171 PDM_APICHLPRC_VERSION 170 172 }; … … 487 489 PDMDEV_ASSERT_DEVINS(pDevIns); 488 490 return VMMGetCpuId(pDevIns->Internal.s.pVMRC); 491 } 492 493 /** @copydoc PDMAPICHLPR3::pfnSendSipi */ 494 static DECLCALLBACK(void) pdmRCApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, int iVector) 495 { 496 /* we shall never send a SIPI in raw mode */ 497 AssertFailed(); 489 498 } 490 499 -
trunk/src/VBox/VMM/VMMR0/PDMR0Device.cpp
r19141 r19437 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); 96 97 /** @} */ 97 98 … … 170 171 pdmR0ApicHlp_Unlock, 171 172 pdmR0ApicHlp_GetCpuId, 173 pdmR0ApicHlp_SendSipi, 172 174 PDM_APICHLPR0_VERSION 173 175 }; … … 503 505 } 504 506 507 /** @copydoc PDMAPICHLPR0::pfnSendSipi */ 508 static DECLCALLBACK(void) pdmR0ApicHlp_SendSipi(PPDMDEVINS pDevIns, VMCPUID idCpu, int iVector) 509 { 510 PDMDEV_ASSERT_DEVINS(pDevIns); 511 return VMMSendSipi(pDevIns->Internal.s.pVMR0, idCpu, iVector); 512 } 505 513 506 514 /** @copydoc PDMIOAPICHLPR0::pfnApicBusDeliver */
Note:
See TracChangeset
for help on using the changeset viewer.