- Timestamp:
- Feb 12, 2024 4:02:29 PM (12 months ago)
- svn:sync-xref-src-repo-rev:
- 161614
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/USB/DevEHCI.cpp
r99739 r103317 1624 1624 break; /* detect if list item is self-cycled. */ 1625 1625 1626 GCPhys = qtd.Next.Pointer << EHCI_TD_PTR_SHIFT;1626 GCPhys = (RTGCPHYS)qtd.Next.Pointer << EHCI_TD_PTR_SHIFT; 1627 1627 1628 1628 if (GCPhys == GCPhysHead) … … 1660 1660 break; /* detect if list item is self-cycled. */ 1661 1661 1662 GCPhys = qtd.AltNext.Pointer << EHCI_TD_PTR_SHIFT;1662 GCPhys = (RTGCPHYS)qtd.AltNext.Pointer << EHCI_TD_PTR_SHIFT; 1663 1663 1664 1664 if (GCPhys == GCPhysHead) … … 1702 1702 ((RTGCPHYS)qhd.Overlay.OrgQTD.Next.Pointer << EHCI_TD_PTR_SHIFT), qhd.Overlay.OrgQTD.Next.Terminate, 1703 1703 ((RTGCPHYS)qhd.Overlay.OrgQTD.AltNext.Pointer << EHCI_TD_PTR_SHIFT), qhd.Overlay.OrgQTD.AltNext.Terminate)); 1704 ehciR3DumpSingleQTD( qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT, &qhd.Overlay.OrgQTD, "");1705 ehciR3DumpQTD(pDevIns, qhd.Overlay.OrgQTD.Next.Pointer << EHCI_TD_PTR_SHIFT, true);1704 ehciR3DumpSingleQTD((RTGCPHYS)qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT, &qhd.Overlay.OrgQTD, ""); 1705 ehciR3DumpQTD(pDevIns, (RTGCPHYS)qhd.Overlay.OrgQTD.Next.Pointer << EHCI_TD_PTR_SHIFT, true); 1706 1706 1707 1707 Assert(qhd.Next.Pointer || qhd.Next.Terminate); … … 1728 1728 break; /* Looping on itself. Bad guest! */ 1729 1729 1730 GCPhys = ptr.Pointer << EHCI_TD_PTR_SHIFT;1730 GCPhys = (RTGCPHYS)ptr.Pointer << EHCI_TD_PTR_SHIFT; 1731 1731 if (GCPhys == GCPhysHead) 1732 1732 break; /* break the loop */ … … 1768 1768 { 1769 1769 Log2(("T%d Len=%x Offset=%x PG=%d IOC=%d Buffer=%x\n", i, pItd->Transaction[i].Length, pItd->Transaction[i].Offset, pItd->Transaction[i].PG, pItd->Transaction[i].IOC, 1770 pItd->Buffer.Buffer[pItd->Transaction[i].PG].Pointer << EHCI_BUFFER_PTR_SHIFT));1770 (RTGCPHYS)pItd->Buffer.Buffer[pItd->Transaction[i].PG].Pointer << EHCI_BUFFER_PTR_SHIFT)); 1771 1771 } 1772 1772 } … … 1785 1785 1786 1786 /* next */ 1787 GCPhys = pItd->Next.Pointer << EHCI_TD_PTR_SHIFT;1787 GCPhys = (RTGCPHYS)pItd->Next.Pointer << EHCI_TD_PTR_SHIFT; 1788 1788 } 1789 1789 } … … 2326 2326 LogRelMax(10, ("EHCI: Crossing to undefined page %d in iTD at %RGp on completion.\n", pg + 1, pUrb->paTds[0].TdAddr)); 2327 2327 2328 GCPhysBuf = pItd->Buffer.Buffer[pg + 1].Pointer << EHCI_BUFFER_PTR_SHIFT;2328 GCPhysBuf = (RTGCPHYS)pItd->Buffer.Buffer[pg + 1].Pointer << EHCI_BUFFER_PTR_SHIFT; 2329 2329 ehciPhysWrite(pDevIns, GCPhysBuf, pb + cb1, cb2); 2330 2330 } … … 2410 2410 ("Out of order completion %RGp != %RGp Endpoint=%#x\n", pUrb->paTds[0].TdAddr, 2411 2411 ((RTGCPHYS)qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT), pUrb->EndPt)); 2412 ehciR3ReadQTD(pDevIns, qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT, &qtd);2412 ehciR3ReadQTD(pDevIns, (RTGCPHYS)qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT, &qtd); 2413 2413 2414 2414 /* … … 2461 2461 unsigned cbCurTransfer; 2462 2462 2463 GCPhysBuf = qtd.Buffer.Buffer[i].Pointer << EHCI_BUFFER_PTR_SHIFT;2463 GCPhysBuf = (RTGCPHYS)qtd.Buffer.Buffer[i].Pointer << EHCI_BUFFER_PTR_SHIFT; 2464 2464 if (i == 0) 2465 2465 GCPhysBuf += qtd.Buffer.Offset.Offset; … … 2601 2601 ehciR3ReadQHD(pDevIns, pUrb->pHci->EdAddr, &qhd); 2602 2602 Assert(pUrb->paTds[0].TdAddr == ((RTGCPHYS)qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT)); 2603 ehciR3ReadQTD(pDevIns, qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT, &qtd);2603 ehciR3ReadQTD(pDevIns, (RTGCPHYS)qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT, &qtd); 2604 2604 2605 2605 /* … … 2738 2738 unsigned cbCurTransfer; 2739 2739 2740 GCPhysBuf = pQtd->Buffer.Buffer[i].Pointer << EHCI_BUFFER_PTR_SHIFT;2740 GCPhysBuf = (RTGCPHYS)pQtd->Buffer.Buffer[i].Pointer << EHCI_BUFFER_PTR_SHIFT; 2741 2741 if (i == 0) 2742 2742 GCPhysBuf += pQtd->Buffer.Offset.Offset; … … 2863 2863 const unsigned pg = pItd->Transaction[i].PG; 2864 2864 2865 GCPhysBuf = pItd->Buffer.Buffer[pg].Pointer << EHCI_BUFFER_PTR_SHIFT;2865 GCPhysBuf = (RTGCPHYS)pItd->Buffer.Buffer[pg].Pointer << EHCI_BUFFER_PTR_SHIFT; 2866 2866 GCPhysBuf += pItd->Transaction[i].Offset; 2867 2867 … … 2878 2878 LogRelMax(10, ("EHCI: Crossing to undefined page %d in iTD at %RGp on submit.\n", pg + 1, pUrb->paTds[0].TdAddr)); 2879 2879 2880 GCPhysBuf = pItd->Buffer.Buffer[pg + 1].Pointer << EHCI_BUFFER_PTR_SHIFT;2880 GCPhysBuf = (RTGCPHYS)pItd->Buffer.Buffer[pg + 1].Pointer << EHCI_BUFFER_PTR_SHIFT; 2881 2881 ehciPhysRead(pDevIns, GCPhysBuf, &pUrb->abData[curOffset + cb1], cb2); 2882 2882 } … … 3025 3025 { 3026 3026 EHCI_QTD qtdNext; 3027 RTGCPHYS GCPhysNextQTD = pQhd->Overlay.OrgQTD.Next.Pointer << EHCI_TD_PTR_SHIFT;3027 RTGCPHYS GCPhysNextQTD = (RTGCPHYS)pQhd->Overlay.OrgQTD.Next.Pointer << EHCI_TD_PTR_SHIFT; 3028 3028 3029 3029 if (ehciR3IsTdInFlight(pThisCC, GCPhysNextQTD)) … … 3074 3074 ehciR3QHSetupOverlay(pDevIns, pQhd, GCPhysQHD, &qtd, GCPhysQTD); 3075 3075 else 3076 Log2Func(("transfer %RGp in progress -> don't update the overlay\n", (RTGCPHYS) (pQhd->CurrQTD.Pointer << EHCI_TD_PTR_SHIFT)));3076 Log2Func(("transfer %RGp in progress -> don't update the overlay\n", (RTGCPHYS)pQhd->CurrQTD.Pointer << EHCI_TD_PTR_SHIFT)); 3077 3077 3078 3078 ehciR3SubmitQTD(pDevIns, pThis, pThisCC, GCPhysQHD, pQhd, GCPhysQTD, &qtd, iFrame); … … 3120 3120 Assert(qtd.AltNext.Pointer); 3121 3121 Log2(("Taking alternate pointer %RGp\n", (RTGCPHYS)(qtd.AltNext.Pointer << EHCI_TD_PTR_SHIFT))); 3122 return qtd.AltNext.Pointer << EHCI_TD_PTR_SHIFT;3122 return (RTGCPHYS)qtd.AltNext.Pointer << EHCI_TD_PTR_SHIFT; 3123 3123 } 3124 3124 else … … 3127 3127 if (qtd.Next.Terminate || !qtd.Next.Pointer) 3128 3128 return 0; 3129 return qtd.Next.Pointer << EHCI_TD_PTR_SHIFT;3129 return (RTGCPHYS)qtd.Next.Pointer << EHCI_TD_PTR_SHIFT; 3130 3130 } 3131 3131 } … … 3207 3207 if (qhd.Overlay.OrgQTD.Token.Bits.Active) 3208 3208 { 3209 Assert(ehciR3IsTdInFlight(pThisCC, qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT));3210 GCPhysQTD = qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT;3209 Assert(ehciR3IsTdInFlight(pThisCC, (RTGCPHYS)qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT)); 3210 GCPhysQTD = (RTGCPHYS)qhd.CurrQTD.Pointer << EHCI_TD_PTR_SHIFT; 3211 3211 } 3212 3212 else … … 3217 3217 { 3218 3218 Assert(qhd.Overlay.OrgQTD.AltNext.Pointer); 3219 Log2(("Taking alternate pointer %RGp\n", (RTGCPHYS) (qhd.Overlay.OrgQTD.AltNext.Pointer << EHCI_TD_PTR_SHIFT)));3220 GCPhysQTD = qhd.Overlay.OrgQTD.AltNext.Pointer << EHCI_TD_PTR_SHIFT;3219 Log2(("Taking alternate pointer %RGp\n", (RTGCPHYS)qhd.Overlay.OrgQTD.AltNext.Pointer << EHCI_TD_PTR_SHIFT)); 3220 GCPhysQTD = (RTGCPHYS)qhd.Overlay.OrgQTD.AltNext.Pointer << EHCI_TD_PTR_SHIFT; 3221 3221 } 3222 3222 else … … 3226 3226 GCPhysQTD = 0; 3227 3227 else 3228 GCPhysQTD = qhd.Overlay.OrgQTD.Next.Pointer << EHCI_TD_PTR_SHIFT;3228 GCPhysQTD = (RTGCPHYS)qhd.Overlay.OrgQTD.Next.Pointer << EHCI_TD_PTR_SHIFT; 3229 3229 } 3230 3230 } … … 3309 3309 3310 3310 /* next */ 3311 GCPhys = ptr.Pointer << EHCI_TD_PTR_SHIFT;3311 GCPhys = (RTGCPHYS)ptr.Pointer << EHCI_TD_PTR_SHIFT; 3312 3312 Assert(!(GCPhys & 0x1f)); 3313 3313 if ( GCPhys == GCPhysHead … … 3358 3358 while (!FramePtr.Terminate && (pThis->cmd & EHCI_CMD_RUN)) 3359 3359 { 3360 GCPhys = FramePtr.FrameAddr << EHCI_FRAME_LIST_NEXTPTR_SHIFT;3360 GCPhys = (RTGCPHYS)FramePtr.FrameAddr << EHCI_FRAME_LIST_NEXTPTR_SHIFT; 3361 3361 /* Process the descriptor based on its type. Note that on the periodic 3362 3362 * list, HCDs may (and do) mix iTDs and qHDs more or less freely.
Note:
See TracChangeset
for help on using the changeset viewer.