Lines Matching refs:pRange

341     PIOMIOPORTRANGERC pRange = (PIOMIOPORTRANGERC)pNode;
344 Assert(pRange->pDevIns);
345 pRange->pDevIns += offDelta;
346 if (pRange->pfnOutCallback)
347 pRange->pfnOutCallback += offDelta;
348 if (pRange->pfnInCallback)
349 pRange->pfnInCallback += offDelta;
350 if (pRange->pfnOutStrCallback)
351 pRange->pfnOutStrCallback += offDelta;
352 if (pRange->pfnInStrCallback)
353 pRange->pfnInStrCallback += offDelta;
354 if (pRange->pvUser > _64K)
355 pRange->pvUser += offDelta;
370 PIOMMMIORANGE pRange = (PIOMMMIORANGE)pNode;
373 if (pRange->pDevInsRC)
374 pRange->pDevInsRC += offDelta;
375 if (pRange->pfnWriteCallbackRC)
376 pRange->pfnWriteCallbackRC += offDelta;
377 if (pRange->pfnReadCallbackRC)
378 pRange->pfnReadCallbackRC += offDelta;
379 if (pRange->pfnFillCallbackRC)
380 pRange->pfnFillCallbackRC += offDelta;
381 if (pRange->pvUserRC > _64K)
382 pRange->pvUserRC += offDelta;
578 PIOMIOPORTRANGER3 pRange;
579 int rc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange);
582 pRange->Core.Key = PortStart;
583 pRange->Core.KeyLast = PortStart + (cPorts - 1);
584 pRange->Port = PortStart;
585 pRange->cPorts = cPorts;
586 pRange->pvUser = pvUser;
587 pRange->pDevIns = pDevIns;
588 pRange->pfnOutCallback = pfnOutCallback;
589 pRange->pfnInCallback = pfnInCallback;
590 pRange->pfnOutStrCallback = pfnOutStrCallback;
591 pRange->pfnInStrCallback = pfnInStrCallback;
592 pRange->pszDesc = pszDesc;
598 if (RTAvlroIOPortInsert(&pVM->iom.s.pTreesR3->IOPortTreeR3, &pRange->Core))
612 MMHyperFree(pVM, pRange);
672 PIOMIOPORTRANGER3 pRange = (PIOMIOPORTRANGER3)RTAvlroIOPortRangeGet(&pVM->iom.s.CTX_SUFF(pTrees)->IOPortTreeR3, Port);
673 if (!pRange)
681 if (pRange->pDevIns != pDevIns)
683 if (pRange->pDevIns != MMHyperRCToCC(pVM, pDevIns))
691 Port = pRange->Core.KeyLast + 1;
700 PIOMIOPORTRANGERC pRange;
701 int rc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange);
704 pRange->Core.Key = PortStart;
705 pRange->Core.KeyLast = PortLast;
706 pRange->Port = PortStart;
707 pRange->cPorts = cPorts;
708 pRange->pvUser = pvUser;
709 pRange->pfnOutCallback = pfnOutCallback;
710 pRange->pfnInCallback = pfnInCallback;
711 pRange->pfnOutStrCallback = pfnOutStrCallback;
712 pRange->pfnInStrCallback = pfnInStrCallback;
713 pRange->pDevIns = MMHyperCCToRC(pVM, pDevIns);
714 pRange->pszDesc = pszDesc;
719 if (RTAvlroIOPortInsert(&pVM->iom.s.CTX_SUFF(pTrees)->IOPortTreeRC, &pRange->Core))
727 MMHyperFree(pVM, pRange);
787 PIOMIOPORTRANGER3 pRange = (PIOMIOPORTRANGER3)RTAvlroIOPortRangeGet(&pVM->iom.s.CTX_SUFF(pTrees)->IOPortTreeR3, Port);
788 if (!pRange)
796 if (pRange->pDevIns != pDevIns)
798 if (pRange->pDevIns != MMHyperRCToCC(pVM, pDevIns))
806 Port = pRange->Core.KeyLast + 1;
815 PIOMIOPORTRANGER0 pRange;
816 int rc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange);
819 pRange->Core.Key = PortStart;
820 pRange->Core.KeyLast = PortLast;
821 pRange->Port = PortStart;
822 pRange->cPorts = cPorts;
823 pRange->pvUser = pvUser;
824 pRange->pfnOutCallback = pfnOutCallback;
825 pRange->pfnInCallback = pfnInCallback;
826 pRange->pfnOutStrCallback = pfnOutStrCallback;
827 pRange->pfnInStrCallback = pfnInStrCallback;
828 pRange->pDevIns = MMHyperR3ToR0(pVM, pDevIns);
829 pRange->pszDesc = pszDesc;
834 if (RTAvlroIOPortInsert(&pVM->iom.s.CTX_SUFF(pTrees)->IOPortTreeR0, &pRange->Core))
842 MMHyperFree(pVM, pRange);
895 PIOMIOPORTRANGER3 pRange = (PIOMIOPORTRANGER3)RTAvlroIOPortRangeGet(&pVM->iom.s.pTreesR3->IOPortTreeR3, Port);
896 if (pRange)
898 Assert(Port <= pRange->Core.KeyLast);
900 if (pRange->pDevIns != pDevIns)
903 PortStart, PortLast, pRange->Core.Key, pRange->Core.KeyLast, pRange->pszDesc));
908 Port = pRange->Core.KeyLast;
923 PIOMIOPORTRANGERC pRange = (PIOMIOPORTRANGERC)RTAvlroIOPortRangeGet(&pVM->iom.s.pTreesR3->IOPortTreeRC, Port);
924 if (pRange)
926 if ( pRange->Core.Key == Port
927 && pRange->Core.KeyLast <= PortLast)
933 Assert(pv == (void *)pRange); NOREF(pv);
934 Port += pRange->cPorts;
935 MMHyperFree(pVM, pRange);
937 else if (pRange->Core.Key == Port)
942 pRange->cPorts -= Port - pRange->Port;
943 pRange->Core.Key = Port;
944 pRange->Port = Port;
947 else if (pRange->Core.KeyLast <= PortLast)
952 unsigned c = pRange->Core.KeyLast - Port + 1;
953 pRange->Core.KeyLast -= c;
954 pRange->cPorts -= c;
962 Assert(pRange->Core.KeyLast > PortLast && pRange->Core.Key < Port);
971 *pRangeNew = *pRange;
979 pRange->Core.KeyLast = Port - 1;
980 pRange->cPorts = Port - pRange->Port;
1006 PIOMIOPORTRANGER0 pRange = (PIOMIOPORTRANGER0)RTAvlroIOPortRangeGet(&pVM->iom.s.pTreesR3->IOPortTreeR0, Port);
1007 if (pRange)
1009 if ( pRange->Core.Key == Port
1010 && pRange->Core.KeyLast <= PortLast)
1016 Assert(pv == (void *)pRange); NOREF(pv);
1017 Port += pRange->cPorts;
1018 MMHyperFree(pVM, pRange);
1020 else if (pRange->Core.Key == Port)
1025 pRange->cPorts -= Port - pRange->Port;
1026 pRange->Core.Key = Port;
1027 pRange->Port = Port;
1030 else if (pRange->Core.KeyLast <= PortLast)
1035 unsigned c = pRange->Core.KeyLast - Port + 1;
1036 pRange->Core.KeyLast -= c;
1037 pRange->cPorts -= c;
1045 Assert(pRange->Core.KeyLast > PortLast && pRange->Core.Key < Port);
1054 *pRangeNew = *pRange;
1062 pRange->Core.KeyLast = Port - 1;
1063 pRange->cPorts = Port - pRange->Port;
1088 PIOMIOPORTRANGER3 pRange = (PIOMIOPORTRANGER3)RTAvlroIOPortRangeGet(&pVM->iom.s.pTreesR3->IOPortTreeR3, Port);
1089 if (pRange)
1091 if ( pRange->Core.Key == Port
1092 && pRange->Core.KeyLast <= PortLast)
1098 Assert(pv == (void *)pRange); NOREF(pv);
1099 Port += pRange->cPorts;
1100 MMHyperFree(pVM, pRange);
1102 else if (pRange->Core.Key == Port)
1107 pRange->cPorts -= Port - pRange->Port;
1108 pRange->Core.Key = Port;
1109 pRange->Port = Port;
1112 else if (pRange->Core.KeyLast <= PortLast)
1117 unsigned c = pRange->Core.KeyLast - Port + 1;
1118 pRange->Core.KeyLast -= c;
1119 pRange->cPorts -= c;
1127 Assert(pRange->Core.KeyLast > PortLast && pRange->Core.Key < Port);
1136 *pRangeNew = *pRange;
1144 pRange->Core.KeyLast = Port - 1;
1145 pRange->cPorts = Port - pRange->Port;
1261 PIOMIOPORTRANGER3 pRange = (PIOMIOPORTRANGER3)pNode;
1265 pRange->Core.Key,
1266 pRange->Core.KeyLast,
1267 pRange->pDevIns,
1268 pRange->pfnInCallback,
1269 pRange->pfnOutCallback,
1270 pRange->pvUser,
1271 pRange->pszDesc);
1285 PIOMIOPORTRANGERC pRange = (PIOMIOPORTRANGERC)pNode;
1289 pRange->Core.Key,
1290 pRange->Core.KeyLast,
1291 pRange->pDevIns,
1292 pRange->pfnInCallback,
1293 pRange->pfnOutCallback,
1294 pRange->pvUser,
1295 pRange->pszDesc);
1397 PIOMMMIORANGE pRange;
1398 rc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange);
1401 pRange->Core.Key = GCPhysStart;
1402 pRange->Core.KeyLast = GCPhysStart + (cbRange - 1);
1403 pRange->GCPhys = GCPhysStart;
1404 pRange->cb = cbRange;
1405 pRange->cRefs = 1; /* The tree reference. */
1406 pRange->pszDesc = pszDesc;
1408 //pRange->pvUserR0 = NIL_RTR0PTR;
1409 //pRange->pDevInsR0 = NIL_RTR0PTR;
1410 //pRange->pfnReadCallbackR0 = NIL_RTR0PTR;
1411 //pRange->pfnWriteCallbackR0 = NIL_RTR0PTR;
1412 //pRange->pfnFillCallbackR0 = NIL_RTR0PTR;
1414 //pRange->pvUserRC = NIL_RTRCPTR;
1415 //pRange->pDevInsRC = NIL_RTRCPTR;
1416 //pRange->pfnReadCallbackRC = NIL_RTRCPTR;
1417 //pRange->pfnWriteCallbackRC = NIL_RTRCPTR;
1418 //pRange->pfnFillCallbackRC = NIL_RTRCPTR;
1420 pRange->fFlags = fFlags;
1422 pRange->pvUserR3 = pvUser;
1423 pRange->pDevInsR3 = pDevIns;
1424 pRange->pfnReadCallbackR3 = pfnReadCallback;
1425 pRange->pfnWriteCallbackR3 = pfnWriteCallback;
1426 pRange->pfnFillCallbackR3 = pfnFillCallback;
1432 IOMR3MMIOHandler, pRange,
1433 pVM->iom.s.pfnMMIOHandlerR0, MMHyperR3ToR0(pVM, pRange),
1434 pVM->iom.s.pfnMMIOHandlerRC, MMHyperR3ToRC(pVM, pRange), pszDesc);
1438 if (RTAvlroGCPhysInsert(&pVM->iom.s.pTreesR3->MMIOTree, &pRange->Core))
1452 MMHyperFree(pVM, pRange);
1502 PIOMMMIORANGE pRange = iomMmioGetRange(pVM, pVCpu, GCPhysStart);
1503 AssertReturnStmt(pRange, IOM_UNLOCK_EXCL(pVM), VERR_IOM_MMIO_RANGE_NOT_FOUND);
1504 AssertReturnStmt(pRange->pDevInsR3 == pDevIns, IOM_UNLOCK_EXCL(pVM), VERR_IOM_NOT_MMIO_RANGE_OWNER);
1505 AssertReturnStmt(pRange->GCPhys == GCPhysStart, IOM_UNLOCK_EXCL(pVM), VERR_IOM_INVALID_MMIO_RANGE);
1506 AssertReturnStmt(pRange->cb == cbRange, IOM_UNLOCK_EXCL(pVM), VERR_IOM_INVALID_MMIO_RANGE);
1508 pRange->pvUserRC = pvUser;
1509 pRange->pfnReadCallbackRC = pfnReadCallback;
1510 pRange->pfnWriteCallbackRC= pfnWriteCallback;
1511 pRange->pfnFillCallbackRC = pfnFillCallback;
1512 pRange->pDevInsRC = MMHyperCCToRC(pVM, pDevIns);
1561 PIOMMMIORANGE pRange = iomMmioGetRange(pVM, pVCpu, GCPhysStart);
1562 AssertReturnStmt(pRange, IOM_UNLOCK_EXCL(pVM), VERR_IOM_MMIO_RANGE_NOT_FOUND);
1563 AssertReturnStmt(pRange->pDevInsR3 == pDevIns, IOM_UNLOCK_EXCL(pVM), VERR_IOM_NOT_MMIO_RANGE_OWNER);
1564 AssertReturnStmt(pRange->GCPhys == GCPhysStart, IOM_UNLOCK_EXCL(pVM), VERR_IOM_INVALID_MMIO_RANGE);
1565 AssertReturnStmt(pRange->cb == cbRange, IOM_UNLOCK_EXCL(pVM), VERR_IOM_INVALID_MMIO_RANGE);
1567 pRange->pvUserR0 = pvUser;
1568 pRange->pfnReadCallbackR0 = pfnReadCallback;
1569 pRange->pfnWriteCallbackR0= pfnWriteCallback;
1570 pRange->pfnFillCallbackR0 = pfnFillCallback;
1571 pRange->pDevInsR0 = MMHyperCCToR0(pVM, pDevIns);
1616 PIOMMMIORANGE pRange = iomMmioGetRange(pVM, pVCpu, GCPhys);
1617 if (!pRange)
1622 AssertMsgReturnStmt(pRange->pDevInsR3 == pDevIns,
1623 ("Not owner! GCPhys=%RGp %RGp LB%#x %s\n", GCPhys, GCPhysStart, cbRange, pRange->pszDesc),
1626 AssertMsgReturnStmt(pRange->Core.KeyLast <= GCPhysLast,
1627 ("Incomplete R3 range! GCPhys=%RGp %RGp LB%#x %s\n", GCPhys, GCPhysStart, cbRange, pRange->pszDesc),
1632 Assert(GCPhys <= pRange->Core.KeyLast);
1633 GCPhys = pRange->Core.KeyLast + 1;
1644 PIOMMMIORANGE pRange = (PIOMMMIORANGE)RTAvlroGCPhysRemove(&pVM->iom.s.pTreesR3->MMIOTree, GCPhys);
1645 Assert(pRange);
1646 Assert(pRange->Core.Key == GCPhys && pRange->Core.KeyLast <= GCPhysLast);
1650 int rc = PGMR3PhysMMIODeregister(pVM, GCPhys, pRange->cb);
1656 GCPhys = pRange->Core.KeyLast + 1;
1659 void *pvDesc = ASMAtomicXchgPtr((void * volatile *)&pRange->pszDesc, NULL);
1662 iomMmioReleaseRange(pVM, pRange);
1679 PIOMMMIORANGE pRange = (PIOMMMIORANGE)pNode;
1683 pRange->Core.Key,
1684 pRange->Core.KeyLast,
1685 pRange->pDevInsR3,
1686 pRange->pfnReadCallbackR3,
1687 pRange->pfnWriteCallbackR3,
1688 pRange->pfnFillCallbackR3,
1689 pRange->pvUserR3,
1690 pRange->pszDesc);
1694 pRange->pDevInsR0,
1695 pRange->pfnReadCallbackR0,
1696 pRange->pfnWriteCallbackR0,
1697 pRange->pfnFillCallbackR0,
1698 pRange->pvUserR0);
1702 pRange->pDevInsRC,
1703 pRange->pfnReadCallbackRC,
1704 pRange->pfnWriteCallbackRC,
1705 pRange->pfnFillCallbackRC,
1706 pRange->pvUserRC);