Changeset 80549 in vbox
- Timestamp:
- Sep 2, 2019 12:05:44 PM (5 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/VMM/VMMAll/TMAll.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/TMAll.cpp
r80531 r80549 62 62 # define TMTIMER_GET_CRITSECT(pTimer) ((pTimer)->pCritSect) 63 63 # else 64 # define TMTIMER_GET_CRITSECT(pTimer) \ 65 ( (pTimer)->enmType == TMTIMERTYPE_DEV \ 66 && (pTimer)->pCritSect == ((struct PDMDEVINSR3 *)(pTimer)->u.Dev.pDevIns)->pCritSectRoR3 \ 67 ? ((struct PDMDEVINSR3 *)(pTimer)->u.Dev.pDevIns)->pDevInsR0RemoveMe->pCritSectRoR0 \ 68 : (PPDMCRITSECT)MMHyperR3ToCC((pTimer)->CTX_SUFF(pVM), (pTimer)->pCritSect) ) 64 # define TMTIMER_GET_CRITSECT(pTimer) tmRZTimerGetCritSect(pTimer) 69 65 # endif 70 66 #endif … … 127 123 #endif 128 124 125 #if defined(VBOX_STRICT) && defined(IN_RING0) 126 /** 127 * Helper for TMTIMER_GET_CRITSECT 128 * @todo This needs a redo! 129 */ 130 DECLINLINE(PPDMCRITSECT) tmRZTimerGetCritSect(PTMTIMER pTimer) 131 { 132 if (pTimer->enmType == TMTIMERTYPE_DEV) 133 { 134 PPDMDEVINSR0 pDevInsR0 = ((struct PDMDEVINSR3 *)pTimer->u.Dev.pDevIns)->pDevInsR0RemoveMe; /* !ring-3 read! */ 135 struct PDMDEVINSR3 *pDevInsR3 = pDevInsR0->pDevInsForR3R0; 136 if (pTimer->pCritSect == pDevInsR3->pCritSectRoR3) 137 return pDevInsR0->pCritSectRoR0; 138 uintptr_t offCritSect = (uintptr_t)pTimer->pCritSect - (uintptr_t)pDevInsR3->pvInstanceDataR3; 139 if (offCritSect < pDevInsR0->pReg->cbInstanceShared) 140 return (PPDMCRITSECT)((uintptr_t)pDevInsR0->pvInstanceDataR0 + offCritSect); 141 } 142 return (PPDMCRITSECT)MMHyperR3ToCC((pTimer)->CTX_SUFF(pVM), pTimer->pCritSect); 143 } 144 145 #endif /* VBOX_STRICT*/ 129 146 130 147 /**
Note:
See TracChangeset
for help on using the changeset viewer.

