Lines Matching refs:pAddress

58 static int dbgfR3AddrFromSelInfoOffWorker(PDBGFADDRESS pAddress, PCDBGFSELINFO pSelInfo, RTUINTPTR off)
78 pAddress->FlatPtr = pSelInfo->GCPtrBase + off;
84 pAddress->fFlags = DBGFADDRESS_FLAGS_FLAT;
86 pAddress->fFlags = DBGFADDRESS_FLAGS_FAR16;
88 pAddress->fFlags = DBGFADDRESS_FLAGS_FAR32;
90 pAddress->fFlags = DBGFADDRESS_FLAGS_FAR64;
102 * @param pAddress Where to store the mixed address.
106 VMMR3DECL(int) DBGFR3AddrFromSelOff(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, RTSEL Sel, RTUINTPTR off)
112 pAddress->Sel = Sel;
113 pAddress->off = off;
122 rc = dbgfR3AddrFromSelInfoOffWorker(pAddress, &SelInfo, off);
126 || dbgfR3IsHMA(pUVM, pAddress->FlatPtr))
127 pAddress->fFlags |= DBGFADDRESS_FLAGS_HMA;
131 pAddress->FlatPtr = off;
132 pAddress->fFlags = DBGFADDRESS_FLAGS_FLAT;
133 if (dbgfR3IsHMA(pUVM, pAddress->FlatPtr))
134 pAddress->fFlags |= DBGFADDRESS_FLAGS_HMA;
136 pAddress->fFlags |= DBGFADDRESS_FLAGS_VALID;
149 * @param pAddress Where to store the mixed address.
153 VMMR3DECL(int) DBGFR3AddrFromSelInfoOff(PUVM pUVM, PDBGFADDRESS pAddress, PCDBGFSELINFO pSelInfo, RTUINTPTR off)
158 pAddress->Sel = pSelInfo->Sel;
159 pAddress->off = off;
160 int rc = dbgfR3AddrFromSelInfoOffWorker(pAddress, pSelInfo, off);
164 pAddress->fFlags |= DBGFADDRESS_FLAGS_VALID;
165 if (dbgfR3IsHMA(pUVM, pAddress->FlatPtr))
166 pAddress->fFlags |= DBGFADDRESS_FLAGS_HMA;
175 * @returns pAddress.
177 * @param pAddress Where to store the mixed address.
180 VMMR3DECL(PDBGFADDRESS) DBGFR3AddrFromFlat(PUVM pUVM, PDBGFADDRESS pAddress, RTGCUINTPTR FlatPtr)
184 pAddress->Sel = DBGF_SEL_FLAT;
185 pAddress->off = FlatPtr;
186 pAddress->FlatPtr = FlatPtr;
187 pAddress->fFlags = DBGFADDRESS_FLAGS_FLAT | DBGFADDRESS_FLAGS_VALID;
188 if (dbgfR3IsHMA(pUVM, pAddress->FlatPtr))
189 pAddress->fFlags |= DBGFADDRESS_FLAGS_HMA;
190 return pAddress;
197 * @returns pAddress.
199 * @param pAddress Where to store the mixed address.
202 VMMR3DECL(PDBGFADDRESS) DBGFR3AddrFromPhys(PUVM pUVM, PDBGFADDRESS pAddress, RTGCPHYS PhysAddr)
205 pAddress->Sel = DBGF_SEL_FLAT;
206 pAddress->off = PhysAddr;
207 pAddress->FlatPtr = PhysAddr;
208 pAddress->fFlags = DBGFADDRESS_FLAGS_PHYS | DBGFADDRESS_FLAGS_VALID;
209 return pAddress;
219 * @param pAddress The address to validate.
221 VMMR3DECL(bool) DBGFR3AddrIsValid(PUVM pUVM, PCDBGFADDRESS pAddress)
224 if (!VALID_PTR(pAddress))
226 if (!DBGFADDRESS_IS_VALID(pAddress))
238 * @param pAddress The address.
241 static DECLCALLBACK(int) dbgfR3AddrToPhysOnVCpu(PVMCPU pVCpu, PDBGFADDRESS pAddress, PRTGCPHYS pGCPhys)
245 return PGMGstGetPage(pVCpu, pAddress->FlatPtr, NULL, pGCPhys);
266 * @param pAddress The address.
269 VMMR3DECL(int) DBGFR3AddrToPhys(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, PRTGCPHYS pGCPhys)
276 AssertPtr(pAddress);
277 AssertReturn(DBGFADDRESS_IS_VALID(pAddress), VERR_INVALID_PARAMETER);
287 if (pAddress->fFlags & DBGFADDRESS_FLAGS_HMA)
289 else if (pAddress->fFlags & DBGFADDRESS_FLAGS_PHYS)
291 *pGCPhys = pAddress->FlatPtr;
298 rc = dbgfR3AddrToPhysOnVCpu(pVCpu, pAddress, pGCPhys);
301 (PFNRT)dbgfR3AddrToPhysOnVCpu, 3, pVCpu, pAddress, pGCPhys);
326 * @param pAddress The address.
329 VMMR3DECL(int) DBGFR3AddrToHostPhys(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, PRTHCPHYS pHCPhys)
336 AssertPtr(pAddress);
337 AssertReturn(DBGFADDRESS_IS_VALID(pAddress), VERR_INVALID_PARAMETER);
347 if (pAddress->fFlags & DBGFADDRESS_FLAGS_HMA)
352 rc = DBGFR3AddrToPhys(pUVM, idCpu, pAddress, &GCPhys);
354 rc = PGMPhysGCPhys2HCPhys(pVM, pAddress->FlatPtr, pHCPhys);
367 * @param pAddress The address.
371 static DECLCALLBACK(int) dbgfR3AddrToVolatileR3PtrOnVCpu(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, bool fReadOnly,
379 if (pAddress->fFlags & DBGFADDRESS_FLAGS_HMA)
384 && MMHyperIsInsideArea(pVM, pAddress->FlatPtr))
386 void *pv = MMHyperRCToCC(pVM, (RTRCPTR)pAddress->FlatPtr);
400 if (pAddress->fFlags & DBGFADDRESS_FLAGS_PHYS)
403 rc = PGMPhysGCPhys2CCPtrReadOnly(pVM, pAddress->FlatPtr, (void const **)ppvR3Ptr, &Lock);
405 rc = PGMPhysGCPhys2CCPtr(pVM, pAddress->FlatPtr, ppvR3Ptr, &Lock);
411 rc = PGMPhysGCPtr2CCPtrReadOnly(pVCpu, pAddress->FlatPtr, (void const **)ppvR3Ptr, &Lock);
413 rc = PGMPhysGCPtr2CCPtr(pVCpu, pAddress->FlatPtr, ppvR3Ptr, &Lock);
443 * @param pAddress The address.
449 VMMR3DECL(int) DBGFR3AddrToVolatileR3Ptr(PUVM pUVM, VMCPUID idCpu, PDBGFADDRESS pAddress, bool fReadOnly, void **ppvR3Ptr)
456 AssertPtr(pAddress);
457 AssertReturn(DBGFADDRESS_IS_VALID(pAddress), VERR_INVALID_PARAMETER);
465 pUVM, idCpu, pAddress, fReadOnly, ppvR3Ptr);
472 * @returns pAddress.
474 * @param pAddress The address.
479 VMMR3DECL(PDBGFADDRESS) DBGFR3AddrAdd(PDBGFADDRESS pAddress, RTGCUINTPTR uAddend)
484 AssertPtrReturn(pAddress, NULL);
485 AssertReturn(DBGFADDRESS_IS_VALID(pAddress), NULL);
490 pAddress->off += uAddend;
491 pAddress->FlatPtr += uAddend;
493 return pAddress;
502 * @param pAddress The address.
507 VMMR3DECL(PDBGFADDRESS) DBGFR3AddrSub(PDBGFADDRESS pAddress, RTGCUINTPTR uSubtrahend)
512 AssertPtrReturn(pAddress, NULL);
513 AssertReturn(DBGFADDRESS_IS_VALID(pAddress), NULL);
518 pAddress->off -= uSubtrahend;
519 pAddress->FlatPtr -= uSubtrahend;
521 return pAddress;