Changeset 20037 in vbox for trunk/src/VBox/VMM
- Timestamp:
- May 26, 2009 1:25:48 PM (16 years ago)
- Location:
- trunk/src/VBox/VMM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/PDMInternal.h
r20008 r20037 420 420 DECLR3CALLBACKMEMBER(uint64_t, pfnGetBaseR3,(PPDMDEVINS pDevIns)); 421 421 /** @copydoc PDMAPICREG::pfnSetTPRR3 */ 422 DECLR3CALLBACKMEMBER(void, pfnSetTPRR3,(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t u8TPR ));422 DECLR3CALLBACKMEMBER(void, pfnSetTPRR3,(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t u8TPR, bool fMMIOFormat)); 423 423 /** @copydoc PDMAPICREG::pfnGetTPRR3 */ 424 DECLR3CALLBACKMEMBER(uint8_t, pfnGetTPRR3,(PPDMDEVINS pDevIns, VMCPUID idCpu ));424 DECLR3CALLBACKMEMBER(uint8_t, pfnGetTPRR3,(PPDMDEVINS pDevIns, VMCPUID idCpu, bool fMMIOFormat)); 425 425 /** @copydoc PDMAPICREG::pfnWriteMSRR3 */ 426 426 DECLR3CALLBACKMEMBER(int, pfnWriteMSRR3, (PPDMDEVINS pDevIns, VMCPUID idCpu, uint32_t u32Reg, uint64_t u64Value)); … … 442 442 DECLR0CALLBACKMEMBER(uint64_t, pfnGetBaseR0,(PPDMDEVINS pDevIns)); 443 443 /** @copydoc PDMAPICREG::pfnSetTPRR3 */ 444 DECLR0CALLBACKMEMBER(void, pfnSetTPRR0,(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t u8TPR ));444 DECLR0CALLBACKMEMBER(void, pfnSetTPRR0,(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t u8TPR, bool fMMIOFormat)); 445 445 /** @copydoc PDMAPICREG::pfnGetTPRR3 */ 446 DECLR0CALLBACKMEMBER(uint8_t, pfnGetTPRR0,(PPDMDEVINS pDevIns, VMCPUID idCpu ));446 DECLR0CALLBACKMEMBER(uint8_t, pfnGetTPRR0,(PPDMDEVINS pDevIns, VMCPUID idCpu, bool fMMIOFormat)); 447 447 /** @copydoc PDMAPICREG::pfnWriteMSRR3 */ 448 448 DECLR0CALLBACKMEMBER(uint32_t, pfnWriteMSRR0, (PPDMDEVINS pDevIns, VMCPUID idCpu, uint32_t u32Reg, uint64_t u64Value)); … … 464 464 DECLRCCALLBACKMEMBER(uint64_t, pfnGetBaseRC,(PPDMDEVINS pDevIns)); 465 465 /** @copydoc PDMAPICREG::pfnSetTPRR3 */ 466 DECLRCCALLBACKMEMBER(void, pfnSetTPRRC,(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t u8TPR ));466 DECLRCCALLBACKMEMBER(void, pfnSetTPRRC,(PPDMDEVINS pDevIns, VMCPUID idCpu, uint8_t u8TPR, bool fMMIOFormat)); 467 467 /** @copydoc PDMAPICREG::pfnGetTPRR3 */ 468 DECLRCCALLBACKMEMBER(uint8_t, pfnGetTPRRC,(PPDMDEVINS pDevIns, VMCPUID idCpu ));468 DECLRCCALLBACKMEMBER(uint8_t, pfnGetTPRRC,(PPDMDEVINS pDevIns, VMCPUID idCpu, bool fMMIOFormat)); 469 469 /** @copydoc PDMAPICREG::pfnWriteMSRR3 */ 470 470 DECLRCCALLBACKMEMBER(uint32_t, pfnWriteMSRRC, (PPDMDEVINS pDevIns, VMCPUID idCpu, uint32_t u32Reg, uint64_t u64Value)); -
trunk/src/VBox/VMM/VMMAll/PDMAll.cpp
r20001 r20037 223 223 224 224 /** 225 * Set the TPR (task priority register ?).225 * Set the TPR (task priority register). 226 226 * 227 227 * @returns VBox status code. 228 228 * @param pVCpu VMCPU handle. 229 229 * @param u8TPR The new TPR. 230 * @param fMMIOFormat Update as if MMIO write to ApicBase + 0x80 231 */ 232 VMMDECL(int) PDMApicSetTPREx(PVMCPU pVCpu, uint8_t u8TPR, bool fMMIOFormat) 233 { 234 PVM pVM = pVCpu->CTX_SUFF(pVM); 235 if (pVM->pdm.s.Apic.CTX_SUFF(pDevIns)) 236 { 237 Assert(pVM->pdm.s.Apic.CTX_SUFF(pfnSetTPR)); 238 pdmLock(pVM); 239 pVM->pdm.s.Apic.CTX_SUFF(pfnSetTPR)(pVM->pdm.s.Apic.CTX_SUFF(pDevIns), pVCpu->idCpu, u8TPR, fMMIOFormat); 240 pdmUnlock(pVM); 241 return VINF_SUCCESS; 242 } 243 return VERR_PDM_NO_APIC_INSTANCE; 244 } 245 246 /** 247 * Set the TPR (task priority register). 248 * 249 * @returns VBox status code. 250 * @param pVCpu VMCPU handle. 251 * @param u8TPR The new TPR. 230 252 */ 231 253 VMMDECL(int) PDMApicSetTPR(PVMCPU pVCpu, uint8_t u8TPR) 232 254 { 255 return PDMApicSetTPREx(pVCpu, u8TPR, false /* TPR only */); 256 } 257 258 /** 259 * Get the TPR (task priority register). 260 * 261 * @returns The current TPR. 262 * @param pVCpu VMCPU handle. 263 * @param pu8TPR Where to store the TRP. 264 * @param fMMIOFormat Return as if MMIO read from ApicBase + 0x80 265 * @param pfPending Pending interrupt state (out). 266 */ 267 VMMDECL(int) PDMApicGetTPREx(PVMCPU pVCpu, uint8_t *pu8TPR, bool fMMIOFormat, bool *pfPending) 268 { 233 269 PVM pVM = pVCpu->CTX_SUFF(pVM); 234 270 if (pVM->pdm.s.Apic.CTX_SUFF(pDevIns)) 235 271 { 236 Assert(pVM->pdm.s.Apic.CTX_SUFF(pfnSetTPR)); 237 pdmLock(pVM); 238 pVM->pdm.s.Apic.CTX_SUFF(pfnSetTPR)(pVM->pdm.s.Apic.CTX_SUFF(pDevIns), pVCpu->idCpu, u8TPR); 239 pdmUnlock(pVM); 240 return VINF_SUCCESS; 241 } 272 Assert(pVM->pdm.s.Apic.CTX_SUFF(pfnGetTPR)); 273 pdmLock(pVM); 274 *pu8TPR = pVM->pdm.s.Apic.CTX_SUFF(pfnGetTPR)(pVM->pdm.s.Apic.CTX_SUFF(pDevIns), pVCpu->idCpu, fMMIOFormat); 275 if (pfPending) 276 *pfPending = pVM->pdm.s.Apic.CTX_SUFF(pfnHasPendingIrq)(pVM->pdm.s.Apic.CTX_SUFF(pDevIns)); 277 pdmUnlock(pVM); 278 return VINF_SUCCESS; 279 } 280 *pu8TPR = 0; 242 281 return VERR_PDM_NO_APIC_INSTANCE; 243 282 } … … 254 293 VMMDECL(int) PDMApicGetTPR(PVMCPU pVCpu, uint8_t *pu8TPR, bool *pfPending) 255 294 { 256 PVM pVM = pVCpu->CTX_SUFF(pVM); 257 if (pVM->pdm.s.Apic.CTX_SUFF(pDevIns)) 258 { 259 Assert(pVM->pdm.s.Apic.CTX_SUFF(pfnGetTPR)); 260 pdmLock(pVM); 261 *pu8TPR = pVM->pdm.s.Apic.CTX_SUFF(pfnGetTPR)(pVM->pdm.s.Apic.CTX_SUFF(pDevIns), pVCpu->idCpu); 262 if (pfPending) 263 *pfPending = pVM->pdm.s.Apic.CTX_SUFF(pfnHasPendingIrq)(pVM->pdm.s.Apic.CTX_SUFF(pDevIns)); 264 pdmUnlock(pVM); 265 return VINF_SUCCESS; 266 } 267 *pu8TPR = 0; 268 return VERR_PDM_NO_APIC_INSTANCE; 295 return PDMApicGetTPREx(pVCpu, pu8TPR, false /* TPR only */, pfPending); 269 296 } 270 297
Note:
See TracChangeset
for help on using the changeset viewer.