Changeset 7731 in vbox
- Timestamp:
- Apr 3, 2008 5:05:29 PM (17 years ago)
- svn:sync-xref-src-repo-rev:
- 29267
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/pgm.h
r7635 r7731 467 467 #endif /* !VBOX_WITH_NEW_PHYS_CODE */ 468 468 PGMR3DECL(int) PGMR3PhysRegisterRam(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS cb, const char *pszDesc); 469 PDMR3DECL(int) PGMR3PhysMMIORegister(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS cb, 470 R3PTRTYPE(PFNPGMR3PHYSHANDLER) pfnHandlerR3, RTR3PTR pvUserR3, 471 R0PTRTYPE(PFNPGMR0PHYSHANDLER) pfnHandlerR0, RTR0PTR pvUserR0, 472 GCPTRTYPE(PFNPGMGCPHYSHANDLER) pfnHandlerGC, RTGCPTR pvUserGC, 473 R3PTRTYPE(const char *) pszDesc); 474 PDMR3DECL(int) PGMR3PhysMMIODeregister(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS cb); 469 475 PDMR3DECL(int) PGMR3PhysMMIO2Register(PVM pVM, PPDMDEVINS pDevIns, uint32_t iRegion, RTGCPHYS cb, void **ppv, const char *pszDesc); 470 476 PDMR3DECL(int) PGMR3PhysMMIO2Deregister(PVM pVM, PPDMDEVINS pDevIns, uint32_t iRegion); -
trunk/src/VBox/VMM/IOM.cpp
r7726 r7731 53 53 #include <VBox/stam.h> 54 54 #include <VBox/dbgf.h> 55 #include <VBox/pdm.h> 55 56 #include "IOMInternal.h" 56 57 #include <VBox/vm.h> … … 110 111 { 111 112 pVM->iom.s.pTreesGC = MMHyperHC2GC(pVM, pVM->iom.s.pTreesHC); 113 pVM->iom.s.pfnMMIOHandlerGC = NIL_RTGCPTR; 114 pVM->iom.s.pfnMMIOHandlerR0 = NIL_RTR0PTR; 112 115 113 116 /* … … 1412 1415 LogFlow(("IOMR3MMIORegisterR3: pDevIns=%p GCPhysStart=%VGp cbRange=%#x pvUser=%VHv pfnWriteCallback=%#x pfnReadCallback=%#x pfnFillCallback=%#x pszDesc=%s\n", 1413 1416 pDevIns, GCPhysStart, cbRange, pvUser, pfnWriteCallback, pfnReadCallback, pfnFillCallback, pszDesc)); 1417 int rc; 1414 1418 1415 1419 /* … … 1423 1427 1424 1428 /* 1429 * Resolve the GC/R0 handler addresses lazily because of init order. 1430 */ 1431 if (pVM->iom.s.pfnMMIOHandlerR0 == NIL_RTR0PTR) 1432 { 1433 rc = PDMR3GetSymbolGCLazy(pVM, NULL, "IOMMMIOHandler", &pVM->iom.s.pfnMMIOHandlerGC); 1434 AssertLogRelRCReturn(rc, rc); 1435 rc = PDMR3GetSymbolR0Lazy(pVM, NULL, "IOMMMIOHandler", &pVM->iom.s.pfnMMIOHandlerR0); 1436 AssertLogRelRCReturn(rc, rc); 1437 } 1438 1439 /* 1425 1440 * Allocate new range record and initialize it. 1426 1441 */ 1427 1442 PIOMMMIORANGER3 pRange; 1428 intrc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange);1443 rc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange); 1429 1444 if (VBOX_SUCCESS(rc)) 1430 1445 { … … 1432 1447 pRange->Core.KeyLast = GCPhysStart + (cbRange - 1); 1433 1448 pRange->GCPhys = GCPhysStart; 1434 pRange->cb Size= cbRange;1449 pRange->cb = cbRange; 1435 1450 pRange->pvUser = pvUser; 1436 1451 pRange->pDevIns = pDevIns; … … 1443 1458 * Try register it with PGM and then insert it into the tree. 1444 1459 */ 1445 //rc = PGMR3PhysMMIORegister(pVM, GCPhysStart, cbRange); 1446 //if (RT_SUCCESS(rc)) 1447 rc = PGMR3HandlerPhysicalRegister(pVM, PGMPHYSHANDLERTYPE_MMIO, GCPhysStart, GCPhysStart + (cbRange - 1), 1448 /*IOMR3MMIOHandler*/ NULL, pRange, 1449 NULL, "IOMMMIOHandler", MMHyperR3ToR0(pVM, pRange), 1450 NULL, "IOMMMIOHandler", MMHyperR3ToGC(pVM, pRange), pszDesc); 1460 rc = PGMR3PhysMMIORegister(pVM, GCPhysStart, cbRange, 1461 /*IOMR3MMIOHandler*/ NULL, pRange, 1462 pVM->iom.s.pfnMMIOHandlerR0, MMHyperR3ToR0(pVM, pRange), 1463 pVM->iom.s.pfnMMIOHandlerGC, MMHyperR3ToGC(pVM, pRange), pszDesc); 1451 1464 if (RT_SUCCESS(rc)) 1452 1465 { … … 1489 1502 { 1490 1503 LogFlow(("IOMR3MMIORegisterGC: pDevIns=%p GCPhysStart=%VGp cbRange=%#x pvUser=%VGv pfnWriteCallback=%#x pfnReadCallback=%#x pfnFillCallback=%#x pszDesc=%s\n", 1491 pDevIns, GCPhysStart, cbRange, pvUser, pfnWriteCallback, pfnReadCallback, pfnFillCallback, pszDesc));1492 1493 /*1494 * Validate input.1495 */1496 if (!pfnWriteCallback && !pfnReadCallback)1497 {1498 AssertMsgFailed(("No callbacks! %VGp LB%#x %s\n", GCPhysStart, cbRange, pszDesc));1499 return VERR_INVALID_PARAMETER;1500 }1501 RTGCPHYS GCPhysLast = GCPhysStart + (cbRange - 1);1502 if (GCPhysLast < GCPhysStart)1503 {1504 AssertMsgFailed(("Wrapped! %VGp LB%#x %s\n", GCPhysStart, cbRange, pszDesc));1505 return VERR_IOM_INVALID_MMIO_RANGE;1506 }1507 1508 /*1509 * Check that a ring-3 MMIO range exists.1510 */1511 RTGCPHYS GCPhys = GCPhysStart;1512 while (GCPhys <= GCPhysLast && GCPhys >= GCPhysStart)1513 {1514 PIOMMMIORANGER3 pRange = (PIOMMMIORANGER3)RTAvlroGCPhysRangeGet(&pVM->iom.s.CTXSUFF(pTrees)->MMIOTreeR3, GCPhys);1515 if (!pRange)1516 {1517 AssertMsgFailed(("No R3 range! GCPhys=%VGp %VGp LB%#x %s\n", GCPhys, GCPhysStart, cbRange, pszDesc));1518 return VERR_IOM_NO_HC_MMIO_RANGE;1519 }1520 #ifndef IOM_NO_PDMINS_CHECKS1521 #ifndef IN_GC1522 if (pRange->pDevIns != pDevIns)1523 #else1524 if (pRange->pDevIns != MMHyperGC2HC(pVM, pDevIns))1525 #endif1526 {1527 AssertMsgFailed(("Not owner! GCPhys=%VGp %VGp LB%#x %s / %#x-%#x %s\n", GCPhys, GCPhysStart, cbRange, pszDesc,1528 pRange->Core.Key, pRange->Core.KeyLast, MMHyper2HC(pVM, (uintptr_t)pRange->pszDesc)));1529 return VERR_IOM_NOT_MMIO_RANGE_OWNER;1530 }1531 #endif /* !IOM_NO_PDMINS_CHECKS */1532 /* next */1533 Assert(GCPhys <= pRange->Core.KeyLast);1534 GCPhys = pRange->Core.KeyLast + 1;1535 }1536 1537 1538 /*1539 * Allocate new range record and initialize it.1540 */1541 PIOMMMIORANGEGC pRange;1542 int rc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange);1543 if (VBOX_SUCCESS(rc))1544 {1545 pRange->Core.Key = GCPhysStart;1546 pRange->Core.KeyLast = GCPhysStart + (cbRange - 1);1547 pRange->GCPhys = GCPhysStart;1548 pRange->cbSize = cbRange;1549 pRange->pvUser = pvUser;1550 pRange->pfnReadCallback = pfnReadCallback;1551 pRange->pfnWriteCallback= pfnWriteCallback;1552 pRange->pfnFillCallback = pfnFillCallback;1553 #ifdef IN_GC1554 pRange->pDevIns = pDevIns;1555 pRange->pszDesc = MMHyperGC2HC(pVM, (void *)pszDesc);1556 #else1557 pRange->pDevIns = MMHyperHC2GC(pVM, pDevIns);1558 pRange->pszDesc = pszDesc;1559 #endif1560 1561 /*1562 * Try insert it.1563 */1564 if (RTAvlroGCPhysInsert(&pVM->iom.s.CTXSUFF(pTrees)->MMIOTreeGC, &pRange->Core))1565 return VINF_SUCCESS;1566 1567 AssertMsgFailed(("Conflict! %VGp LB%#x %s\n", GCPhysStart, cbRange, pszDesc));1568 MMHyperFree(pVM, pRange);1569 rc = VERR_IOM_MMIO_RANGE_CONFLICT;1570 }1571 1572 return rc;1573 }1574 1575 1576 /**1577 * Registers a Memory Mapped I/O R0 handler range.1578 *1579 * This API is called by PDM on behalf of a device. Devices must first register ring-3 ranges1580 * using IOMMR3MIORegisterHC() before calling this function.1581 *1582 *1583 * @returns VBox status code.1584 *1585 * @param pVM VM handle.1586 * @param pDevIns PDM device instance owning the MMIO range.1587 * @param GCPhysStart First physical address in the range.1588 * @param cbRange The size of the range (in bytes).1589 * @param pvUser User argument for the callbacks.1590 * @param pfnWriteCallback Pointer to function which is gonna handle Write operations.1591 * @param pfnReadCallback Pointer to function which is gonna handle Read operations.1592 * @param pfnFillCallback Pointer to function which is gonna handle Fill/memset operations.1593 * @param pszDesc Pointer to description string. This must not be freed.1594 */1595 IOMR3DECL(int) IOMR3MMIORegisterR0(PVM pVM, PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTR0PTR pvUser,1596 R0PTRTYPE(PFNIOMMMIOWRITE) pfnWriteCallback, R0PTRTYPE(PFNIOMMMIOREAD) pfnReadCallback,1597 R0PTRTYPE(PFNIOMMMIOFILL) pfnFillCallback, const char *pszDesc)1598 {1599 LogFlow(("IOMR3MMIORegisterR0: pDevIns=%p GCPhysStart=%VGp cbRange=%#x pvUser=%VHv pfnWriteCallback=%#x pfnReadCallback=%#x pfnFillCallback=%#x pszDesc=%s\n",1600 1504 pDevIns, GCPhysStart, cbRange, pvUser, pfnWriteCallback, pfnReadCallback, pfnFillCallback, pszDesc)); 1601 1505 … … 1648 1552 * Allocate new range record and initialize it. 1649 1553 */ 1554 PIOMMMIORANGEGC pRange; 1555 int rc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange); 1556 if (VBOX_SUCCESS(rc)) 1557 { 1558 pRange->Core.Key = GCPhysStart; 1559 pRange->Core.KeyLast = GCPhysStart + (cbRange - 1); 1560 pRange->GCPhys = GCPhysStart; 1561 pRange->cb = cbRange; 1562 pRange->pvUser = pvUser; 1563 pRange->pfnReadCallback = pfnReadCallback; 1564 pRange->pfnWriteCallback= pfnWriteCallback; 1565 pRange->pfnFillCallback = pfnFillCallback; 1566 #ifdef IN_GC 1567 pRange->pDevIns = pDevIns; 1568 pRange->pszDesc = MMHyperGC2HC(pVM, (void *)pszDesc); 1569 #else 1570 pRange->pDevIns = MMHyperHC2GC(pVM, pDevIns); 1571 pRange->pszDesc = pszDesc; 1572 #endif 1573 1574 /* 1575 * Try insert it. 1576 */ 1577 if (RTAvlroGCPhysInsert(&pVM->iom.s.CTXSUFF(pTrees)->MMIOTreeGC, &pRange->Core)) 1578 return VINF_SUCCESS; 1579 1580 AssertMsgFailed(("Conflict! %VGp LB%#x %s\n", GCPhysStart, cbRange, pszDesc)); 1581 MMHyperFree(pVM, pRange); 1582 rc = VERR_IOM_MMIO_RANGE_CONFLICT; 1583 } 1584 1585 return rc; 1586 } 1587 1588 1589 /** 1590 * Registers a Memory Mapped I/O R0 handler range. 1591 * 1592 * This API is called by PDM on behalf of a device. Devices must first register ring-3 ranges 1593 * using IOMMR3MIORegisterHC() before calling this function. 1594 * 1595 * 1596 * @returns VBox status code. 1597 * 1598 * @param pVM VM handle. 1599 * @param pDevIns PDM device instance owning the MMIO range. 1600 * @param GCPhysStart First physical address in the range. 1601 * @param cbRange The size of the range (in bytes). 1602 * @param pvUser User argument for the callbacks. 1603 * @param pfnWriteCallback Pointer to function which is gonna handle Write operations. 1604 * @param pfnReadCallback Pointer to function which is gonna handle Read operations. 1605 * @param pfnFillCallback Pointer to function which is gonna handle Fill/memset operations. 1606 * @param pszDesc Pointer to description string. This must not be freed. 1607 */ 1608 IOMR3DECL(int) IOMR3MMIORegisterR0(PVM pVM, PPDMDEVINS pDevIns, RTGCPHYS GCPhysStart, RTUINT cbRange, RTR0PTR pvUser, 1609 R0PTRTYPE(PFNIOMMMIOWRITE) pfnWriteCallback, R0PTRTYPE(PFNIOMMMIOREAD) pfnReadCallback, 1610 R0PTRTYPE(PFNIOMMMIOFILL) pfnFillCallback, const char *pszDesc) 1611 { 1612 LogFlow(("IOMR3MMIORegisterR0: pDevIns=%p GCPhysStart=%VGp cbRange=%#x pvUser=%VHv pfnWriteCallback=%#x pfnReadCallback=%#x pfnFillCallback=%#x pszDesc=%s\n", 1613 pDevIns, GCPhysStart, cbRange, pvUser, pfnWriteCallback, pfnReadCallback, pfnFillCallback, pszDesc)); 1614 1615 /* 1616 * Validate input. 1617 */ 1618 if (!pfnWriteCallback && !pfnReadCallback) 1619 { 1620 AssertMsgFailed(("No callbacks! %VGp LB%#x %s\n", GCPhysStart, cbRange, pszDesc)); 1621 return VERR_INVALID_PARAMETER; 1622 } 1623 RTGCPHYS GCPhysLast = GCPhysStart + (cbRange - 1); 1624 if (GCPhysLast < GCPhysStart) 1625 { 1626 AssertMsgFailed(("Wrapped! %VGp LB%#x %s\n", GCPhysStart, cbRange, pszDesc)); 1627 return VERR_IOM_INVALID_MMIO_RANGE; 1628 } 1629 1630 /* 1631 * Check that a ring-3 MMIO range exists. 1632 */ 1633 RTGCPHYS GCPhys = GCPhysStart; 1634 while (GCPhys <= GCPhysLast && GCPhys >= GCPhysStart) 1635 { 1636 PIOMMMIORANGER3 pRange = (PIOMMMIORANGER3)RTAvlroGCPhysRangeGet(&pVM->iom.s.CTXSUFF(pTrees)->MMIOTreeR3, GCPhys); 1637 if (!pRange) 1638 { 1639 AssertMsgFailed(("No R3 range! GCPhys=%VGp %VGp LB%#x %s\n", GCPhys, GCPhysStart, cbRange, pszDesc)); 1640 return VERR_IOM_NO_HC_MMIO_RANGE; 1641 } 1642 #ifndef IOM_NO_PDMINS_CHECKS 1643 # ifndef IN_GC 1644 if (pRange->pDevIns != pDevIns) 1645 # else 1646 if (pRange->pDevIns != MMHyperGC2HC(pVM, pDevIns)) 1647 # endif 1648 { 1649 AssertMsgFailed(("Not owner! GCPhys=%VGp %VGp LB%#x %s / %#x-%#x %s\n", GCPhys, GCPhysStart, cbRange, pszDesc, 1650 pRange->Core.Key, pRange->Core.KeyLast, MMHyper2HC(pVM, (uintptr_t)pRange->pszDesc))); 1651 return VERR_IOM_NOT_MMIO_RANGE_OWNER; 1652 } 1653 #endif /* !IOM_NO_PDMINS_CHECKS */ 1654 /* next */ 1655 Assert(GCPhys <= pRange->Core.KeyLast); 1656 GCPhys = pRange->Core.KeyLast + 1; 1657 } 1658 1659 1660 /* 1661 * Allocate new range record and initialize it. 1662 */ 1650 1663 PIOMMMIORANGER0 pRange; 1651 1664 int rc = MMHyperAlloc(pVM, sizeof(*pRange), 0, MM_TAG_IOM, (void **)&pRange); … … 1655 1668 pRange->Core.KeyLast = GCPhysStart + (cbRange - 1); 1656 1669 pRange->GCPhys = GCPhysStart; 1657 pRange->cb Size= cbRange;1670 pRange->cb = cbRange; 1658 1671 pRange->pvUser = pvUser; 1659 1672 pRange->pfnReadCallback = pfnReadCallback; … … 1790 1803 1791 1804 /* remove it from PGM */ 1792 int rc = PGM HandlerPhysicalDeregister(pVM, GCPhys);1805 int rc = PGMR3PhysMMIODeregister(pVM, GCPhys, pRange->cb); 1793 1806 AssertRC(rc); 1794 1807 -
trunk/src/VBox/VMM/IOMInternal.h
r7620 r7731 23 23 #include <VBox/iom.h> 24 24 #include <VBox/stam.h> 25 #include <VBox/pgm.h> 25 26 #include <iprt/avl.h> 26 27 … … 49 50 RTGCPHYS GCPhys; 50 51 /** Size of the range. */ 51 RTUINT cb Size;52 RTUINT cb; 52 53 /** Pointer to user argument. */ 53 54 RTR3PTR pvUser; … … 79 80 #endif 80 81 /** Size of the range. */ 81 RTUINT cb Size;82 RTUINT cb; 82 83 /** Pointer to user argument. */ 83 84 RTR0PTR pvUser; … … 106 107 RTGCPHYS GCPhys; 107 108 /** Size of the range. */ 108 RTUINT cb Size;109 RTUINT cb; 109 110 #if HC_ARCH_BITS == 64 110 111 uint32_t u32Alignment; … … 122 123 #if HC_ARCH_BITS == 64 && GC_ARCH_BITS == 32 123 124 RTGCPTR GCPtrAlignment; /**< pszDesc is 8 byte aligned. */ 124 #endif 125 #endif 125 126 /** Description / Name. For easing debugging. */ 126 127 R3PTRTYPE(const char *) pszDesc; … … 266 267 #if HC_ARCH_BITS == 64 && GC_ARCH_BITS == 32 267 268 RTGCPTR GCPtrAlignment; /**< pszDesc is 8 byte aligned. */ 268 #endif 269 #endif 269 270 /** Description / Name. For easing debugging. */ 270 271 R3PTRTYPE(const char *) pszDesc; … … 375 376 R3R0PTRTYPE(PIOMTREES) pTreesHC; 376 377 378 /** The ring-0 address of IOMMMIOHandler. */ 379 R0PTRTYPE(PFNPGMR0PHYSHANDLER) pfnMMIOHandlerR0; 380 /** The GC address of IOMMMIOHandler. */ 381 GCPTRTYPE(PFNPGMGCPHYSHANDLER) pfnMMIOHandlerGC; 382 RTGCPTR Alignment; 377 383 378 384 /** @name Caching of I/O Port ranges and statistics. -
trunk/src/VBox/VMM/PGMPhys.cpp
r7635 r7731 278 278 * 279 279 */ 280 PDMR3DECL(int) PGMR3PhysMMIORegister(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS cb) 281 { 282 return -1; 280 PDMR3DECL(int) PGMR3PhysMMIORegister(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS cb, 281 R3PTRTYPE(PFNPGMR3PHYSHANDLER) pfnHandlerR3, RTR3PTR pvUserR3, 282 R0PTRTYPE(PFNPGMR0PHYSHANDLER) pfnHandlerR0, RTR0PTR pvUserR0, 283 GCPTRTYPE(PFNPGMGCPHYSHANDLER) pfnHandlerGC, RTGCPTR pvUserGC, 284 R3PTRTYPE(const char *) pszDesc) 285 { 286 287 int rc = PGMHandlerPhysicalRegisterEx(pVM, PGMPHYSHANDLERTYPE_MMIO, GCPhys, GCPhys + (cb - 1), 288 pfnHandlerR3, pvUserR3, 289 pfnHandlerR0, pvUserR0, 290 pfnHandlerGC, pvUserGC, pszDesc); 291 return rc; 283 292 } 284 293 … … 293 302 PDMR3DECL(int) PGMR3PhysMMIODeregister(PVM pVM, RTGCPHYS GCPhys, RTGCPHYS cb) 294 303 { 295 return -1; 304 int rc = PGMHandlerPhysicalDeregister(pVM, GCPhys); 305 306 return rc; 296 307 } 297 308 -
trunk/src/VBox/VMM/VMMAll/IOMAllMMIO.cpp
r7723 r7731 159 159 * @warning VBOX_SUCCESS(rc=VINF_IOM_HC_MMIO_WRITE) is TRUE! 160 160 */ 161 DECLINLINE(int) iomMMIODoWrite(PVM pVM, CTXALLSUFF(PIOMMMIORANGE) pRange, RTGCPHYS GCPhysFault, const void *pvData, unsigned cb Size)161 DECLINLINE(int) iomMMIODoWrite(PVM pVM, CTXALLSUFF(PIOMMMIORANGE) pRange, RTGCPHYS GCPhysFault, const void *pvData, unsigned cb) 162 162 { 163 163 #ifdef VBOX_WITH_STATISTICS 164 if (pRange->cb Size<= PAGE_SIZE)164 if (pRange->cb <= PAGE_SIZE) 165 165 { 166 166 PIOMMMIOSTATS pStats = iomMMIOGetStats(&pVM->iom.s, GCPhysFault); … … 168 168 return VINF_IOM_HC_MMIO_WRITE; 169 169 170 int rc = pRange->pfnWriteCallback(pRange->pDevIns, pRange->pvUser, GCPhysFault, (void *)pvData, cb Size); /* @todo fix const!! */170 int rc = pRange->pfnWriteCallback(pRange->pDevIns, pRange->pvUser, GCPhysFault, (void *)pvData, cb); /* @todo fix const!! */ 171 171 if (rc != VINF_IOM_HC_MMIO_WRITE) 172 172 STAM_COUNTER_INC(&pStats->WriteGC); … … 174 174 } 175 175 #endif 176 return pRange->pfnWriteCallback(pRange->pDevIns, pRange->pvUser, GCPhysFault, (void *)pvData, cb Size);176 return pRange->pfnWriteCallback(pRange->pDevIns, pRange->pvUser, GCPhysFault, (void *)pvData, cb); 177 177 } 178 178 … … 180 180 * Wrapper which does the read and updates range statistics when such are enabled. 181 181 */ 182 DECLINLINE(int) iomMMIODoRead(PVM pVM, CTXALLSUFF(PIOMMMIORANGE) pRange, RTGCPHYS GCPhysFault, void *pvData, unsigned cb Size)182 DECLINLINE(int) iomMMIODoRead(PVM pVM, CTXALLSUFF(PIOMMMIORANGE) pRange, RTGCPHYS GCPhysFault, void *pvData, unsigned cb) 183 183 { 184 184 #ifdef VBOX_WITH_STATISTICS 185 if (pRange->cb Size<= PAGE_SIZE)185 if (pRange->cb <= PAGE_SIZE) 186 186 { 187 187 PIOMMMIOSTATS pStats = iomMMIOGetStats(&pVM->iom.s, GCPhysFault); … … 189 189 return VINF_IOM_HC_MMIO_READ; 190 190 191 int rc = pRange->pfnReadCallback(pRange->pDevIns, pRange->pvUser, GCPhysFault, pvData, cb Size);191 int rc = pRange->pfnReadCallback(pRange->pDevIns, pRange->pvUser, GCPhysFault, pvData, cb); 192 192 if (rc != VINF_IOM_HC_MMIO_READ) 193 193 STAM_COUNTER_INC(&pStats->ReadGC); … … 195 195 } 196 196 #endif 197 return pRange->pfnReadCallback(pRange->pDevIns, pRange->pvUser, GCPhysFault, pvData, cb Size);197 return pRange->pfnReadCallback(pRange->pDevIns, pRange->pvUser, GCPhysFault, pvData, cb); 198 198 } 199 199 … … 373 373 * and call the handler function to get the data. 374 374 */ 375 unsigned cb Size= DISGetParamSize(pCpu, &pCpu->param2);376 AssertMsg(cb Size > 0 && cbSize <= sizeof(uint32_t), ("cbSize=%d\n", cbSize));375 unsigned cb = DISGetParamSize(pCpu, &pCpu->param2); 376 AssertMsg(cb > 0 && cb <= sizeof(uint32_t), ("cb=%d\n", cb)); 377 377 378 378 uint32_t u32Data = 0; 379 int rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &u32Data, cb Size);379 int rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &u32Data, cb); 380 380 if (rc == VINF_SUCCESS) 381 381 { … … 386 386 if (pCpu->pCurInstr->opcode == OP_MOVSX) 387 387 { 388 if (cb Size== 1)388 if (cb == 1) 389 389 { 390 390 /* DWORD <- BYTE */ … … 408 408 409 409 if (rc == VINF_SUCCESS) 410 iomMMIOStatLength(pVM, cb Size);410 iomMMIOStatLength(pVM, cb); 411 411 return rc; 412 412 } … … 436 436 * and call the callback to write it. 437 437 */ 438 unsigned cb Size= 0;438 unsigned cb = 0; 439 439 uint32_t u32Data = 0; 440 bool fRc = iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &u32Data, &cb Size);440 bool fRc = iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &u32Data, &cb); 441 441 AssertMsg(fRc, ("Failed to get reg/imm port number!\n")); NOREF(fRc); 442 442 443 int rc = iomMMIODoWrite(pVM, pRange, GCPhysFault, &u32Data, cb Size);443 int rc = iomMMIODoWrite(pVM, pRange, GCPhysFault, &u32Data, cb); 444 444 if (rc == VINF_SUCCESS) 445 iomMMIOStatLength(pVM, cb Size);445 iomMMIOStatLength(pVM, cb); 446 446 return rc; 447 447 } … … 523 523 * Get data size. 524 524 */ 525 unsigned cb Size= DISGetParamSize(pCpu, &pCpu->param1);526 Assert(cb Size);527 int offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cb Size : (signed)cbSize;525 unsigned cb = DISGetParamSize(pCpu, &pCpu->param1); 526 Assert(cb); 527 int offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cb : (signed)cb; 528 528 529 529 #ifdef VBOX_WITH_STATISTICS 530 if (pVM->iom.s.cMovsMaxBytes < (cTransfers << SIZE_2_SHIFT(cb Size)))531 pVM->iom.s.cMovsMaxBytes = cTransfers << SIZE_2_SHIFT(cb Size);530 if (pVM->iom.s.cMovsMaxBytes < (cTransfers << SIZE_2_SHIFT(cb))) 531 pVM->iom.s.cMovsMaxBytes = cTransfers << SIZE_2_SHIFT(cb); 532 532 #endif 533 533 … … 558 558 559 559 /* Access verification first; we currently can't recover properly from traps inside this instruction */ 560 rc = PGMVerifyAccess(pVM, pu8Virt, cTransfers * cb Size, (cpl == 3) ? X86_PTE_US : 0);560 rc = PGMVerifyAccess(pVM, pu8Virt, cTransfers * cb, (cpl == 3) ? X86_PTE_US : 0); 561 561 if (rc != VINF_SUCCESS) 562 562 { … … 574 574 { 575 575 uint32_t u32Data = 0; 576 rc = iomRamRead(pVM, &u32Data, (RTGCPTR)pu8Virt, cb Size);576 rc = iomRamRead(pVM, &u32Data, (RTGCPTR)pu8Virt, cb); 577 577 if (rc != VINF_SUCCESS) 578 578 break; 579 rc = iomMMIODoWrite(pVM, pRange, Phys, &u32Data, cb Size);579 rc = iomMMIODoWrite(pVM, pRange, Phys, &u32Data, cb); 580 580 if (rc != VINF_SUCCESS) 581 581 break; … … 642 642 { 643 643 uint32_t u32Data; 644 rc = iomMMIODoRead(pVM, pRange, Phys, &u32Data, cb Size);644 rc = iomMMIODoRead(pVM, pRange, Phys, &u32Data, cb); 645 645 if (rc != VINF_SUCCESS) 646 646 break; 647 rc = iomMMIODoWrite(pVM, pMMIODst, PhysDst, &u32Data, cb Size);647 rc = iomMMIODoWrite(pVM, pMMIODst, PhysDst, &u32Data, cb); 648 648 if (rc != VINF_SUCCESS) 649 649 break; … … 666 666 667 667 /* Access verification first; we currently can't recover properly from traps inside this instruction */ 668 rc = PGMVerifyAccess(pVM, pu8Virt, cTransfers * cb Size, X86_PTE_RW | ((cpl == 3) ? X86_PTE_US : 0));668 rc = PGMVerifyAccess(pVM, pu8Virt, cTransfers * cb, X86_PTE_RW | ((cpl == 3) ? X86_PTE_US : 0)); 669 669 if (rc != VINF_SUCCESS) 670 670 { … … 681 681 { 682 682 uint32_t u32Data; 683 rc = iomMMIODoRead(pVM, pRange, Phys, &u32Data, cb Size);683 rc = iomMMIODoRead(pVM, pRange, Phys, &u32Data, cb); 684 684 if (rc != VINF_SUCCESS) 685 685 break; 686 rc = iomRamWrite(pVM, (RTGCPTR)pu8Virt, &u32Data, cb Size);686 rc = iomRamWrite(pVM, (RTGCPTR)pu8Virt, &u32Data, cb); 687 687 if (rc != VINF_SUCCESS) 688 688 { 689 Log(("iomRamWrite %08X size=%d failed with %d\n", pu8Virt, cb Size, rc));689 Log(("iomRamWrite %08X size=%d failed with %d\n", pu8Virt, cb, rc)); 690 690 break; 691 691 } … … 712 712 { 713 713 STAM_PROFILE_STOP(&pVM->iom.s.StatGCInstMovs, a); 714 iomMMIOStatLength(pVM, cb Size);714 iomMMIOStatLength(pVM, cb); 715 715 } 716 716 return rc; … … 763 763 * Get data size. 764 764 */ 765 unsigned cb Size= DISGetParamSize(pCpu, &pCpu->param1);766 Assert(cb Size);767 int offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cb Size : (signed)cbSize;765 unsigned cb = DISGetParamSize(pCpu, &pCpu->param1); 766 Assert(cb); 767 int offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cb : (signed)cb; 768 768 769 769 #ifdef VBOX_WITH_STATISTICS 770 if (pVM->iom.s.cStosMaxBytes < (cTransfers << SIZE_2_SHIFT(cb Size)))771 pVM->iom.s.cStosMaxBytes = cTransfers << SIZE_2_SHIFT(cb Size);770 if (pVM->iom.s.cStosMaxBytes < (cTransfers << SIZE_2_SHIFT(cb))) 771 pVM->iom.s.cStosMaxBytes = cTransfers << SIZE_2_SHIFT(cb); 772 772 #endif 773 773 … … 785 785 { 786 786 /* addr++ variant. */ 787 rc = pRange->pfnFillCallback(pRange->pDevIns, pRange->pvUser, Phys, u32Data, cb Size, cTransfers);787 rc = pRange->pfnFillCallback(pRange->pDevIns, pRange->pvUser, Phys, u32Data, cb, cTransfers); 788 788 if (rc == VINF_SUCCESS) 789 789 { 790 790 /* Update registers. */ 791 pRegFrame->edi += cTransfers << SIZE_2_SHIFT(cb Size);791 pRegFrame->edi += cTransfers << SIZE_2_SHIFT(cb); 792 792 if (pCpu->prefix & PREFIX_REP) 793 793 pRegFrame->ecx = 0; … … 797 797 { 798 798 /* addr-- variant. */ 799 rc = pRange->pfnFillCallback(pRange->pDevIns, pRange->pvUser, (Phys - (cTransfers - 1)) << SIZE_2_SHIFT(cb Size), u32Data, cbSize, cTransfers);799 rc = pRange->pfnFillCallback(pRange->pDevIns, pRange->pvUser, (Phys - (cTransfers - 1)) << SIZE_2_SHIFT(cb), u32Data, cb, cTransfers); 800 800 if (rc == VINF_SUCCESS) 801 801 { 802 802 /* Update registers. */ 803 pRegFrame->edi -= cTransfers << SIZE_2_SHIFT(cb Size);803 pRegFrame->edi -= cTransfers << SIZE_2_SHIFT(cb); 804 804 if (pCpu->prefix & PREFIX_REP) 805 805 pRegFrame->ecx = 0; … … 819 819 do 820 820 { 821 rc = iomMMIODoWrite(pVM, pRange, Phys, &u32Data, cb Size);821 rc = iomMMIODoWrite(pVM, pRange, Phys, &u32Data, cb); 822 822 if (rc != VINF_SUCCESS) 823 823 break; … … 839 839 { 840 840 STAM_PROFILE_STOP(&pVM->iom.s.StatGCInstStos, a); 841 iomMMIOStatLength(pVM, cb Size);841 iomMMIOStatLength(pVM, cb); 842 842 } 843 843 return rc; … … 878 878 * Get data size. 879 879 */ 880 unsigned cb Size= DISGetParamSize(pCpu, &pCpu->param2);881 Assert(cb Size);882 int offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cb Size : (signed)cbSize;880 unsigned cb = DISGetParamSize(pCpu, &pCpu->param2); 881 Assert(cb); 882 int offIncrement = pRegFrame->eflags.Bits.u1DF ? -(signed)cb : (signed)cb; 883 883 884 884 /* 885 885 * Perform read. 886 886 */ 887 int rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &pRegFrame->eax, cb Size);887 int rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &pRegFrame->eax, cb); 888 888 if (rc == VINF_SUCCESS) 889 889 pRegFrame->esi += offIncrement; … … 895 895 { 896 896 STAM_PROFILE_STOP(&pVM->iom.s.StatGCInstLods, a1); 897 iomMMIOStatLength(pVM, cb Size);897 iomMMIOStatLength(pVM, cb); 898 898 } 899 899 return rc; … … 927 927 * Get the operands. 928 928 */ 929 unsigned cb Size= 0;929 unsigned cb = 0; 930 930 uint32_t uData1; 931 931 uint32_t uData2; 932 932 int rc; 933 if (iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &uData1, &cb Size))933 if (iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &uData1, &cb)) 934 934 /* cmp reg, [MMIO]. */ 935 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData2, cb Size);936 else if (iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &uData2, &cb Size))935 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData2, cb); 936 else if (iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &uData2, &cb)) 937 937 /* cmp [MMIO], reg|imm. */ 938 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData1, cb Size);938 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData1, cb); 939 939 else 940 940 { … … 946 946 { 947 947 /* Emulate CMP and update guest flags. */ 948 uint32_t eflags = EMEmulateCmp(uData1, uData2, cb Size);948 uint32_t eflags = EMEmulateCmp(uData1, uData2, cb); 949 949 pRegFrame->eflags.u32 = (pRegFrame->eflags.u32 & ~(X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_OF)) 950 950 | (eflags & (X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_OF)); 951 951 952 952 STAM_PROFILE_STOP(&pVM->iom.s.StatGCInstCmp, a1); 953 iomMMIOStatLength(pVM, cb Size);953 iomMMIOStatLength(pVM, cb); 954 954 } 955 955 … … 979 979 /* Check read callback. */ 980 980 981 unsigned cb Size= 0;981 unsigned cb = 0; 982 982 uint32_t uData1; 983 983 uint32_t uData2; 984 984 bool fAndWrite; 985 985 int rc; 986 if (iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &uData1, &cb Size))986 if (iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &uData1, &cb)) 987 987 { 988 988 /* and reg, [MMIO]. */ 989 989 fAndWrite = false; 990 990 if (pRange->pfnReadCallback) 991 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData2, cb Size);991 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData2, cb); 992 992 else 993 993 rc = VINF_IOM_HC_MMIO_READ; 994 994 } 995 else if (iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &uData2, &cb Size))995 else if (iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &uData2, &cb)) 996 996 { 997 997 /* and [MMIO], reg|imm. */ 998 998 fAndWrite = true; 999 999 if (pRange->pfnReadCallback && pRange->pfnWriteCallback) 1000 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData1, cb Size);1000 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData1, cb); 1001 1001 else 1002 1002 rc = VINF_IOM_HC_MMIO_READ_WRITE; … … 1011 1011 { 1012 1012 /* Emulate AND and update guest flags. */ 1013 uint32_t eflags = EMEmulateAnd(&uData1, uData2, cb Size);1013 uint32_t eflags = EMEmulateAnd(&uData1, uData2, cb); 1014 1014 if (fAndWrite) 1015 1015 /* Store result to MMIO. */ 1016 rc = iomMMIODoWrite(pVM, pRange, GCPhysFault, &uData1, cb Size);1016 rc = iomMMIODoWrite(pVM, pRange, GCPhysFault, &uData1, cb); 1017 1017 else 1018 1018 { … … 1027 1027 | (eflags & (X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_OF)); 1028 1028 STAM_PROFILE_STOP(&pVM->iom.s.StatGCInstAnd, a1); 1029 iomMMIOStatLength(pVM, cb Size);1029 iomMMIOStatLength(pVM, cb); 1030 1030 } 1031 1031 } … … 1057 1057 /* Check read callback. */ 1058 1058 1059 unsigned cb Size= 0;1059 unsigned cb = 0; 1060 1060 uint32_t uData1; 1061 1061 uint32_t uData2; 1062 1062 int rc; 1063 1063 1064 if (iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &uData1, &cb Size))1064 if (iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &uData1, &cb)) 1065 1065 { 1066 1066 /* and test, [MMIO]. */ 1067 1067 if (pRange->pfnReadCallback) 1068 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData2, cb Size);1068 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData2, cb); 1069 1069 else 1070 1070 rc = VINF_IOM_HC_MMIO_READ; 1071 1071 } 1072 else if (iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &uData2, &cb Size))1072 else if (iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &uData2, &cb)) 1073 1073 { 1074 1074 /* test [MMIO], reg|imm. */ 1075 1075 if (pRange->pfnReadCallback) 1076 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData1, cb Size);1076 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData1, cb); 1077 1077 else 1078 1078 rc = VINF_IOM_HC_MMIO_READ; … … 1087 1087 { 1088 1088 /* Emulate TEST (=AND without write back) and update guest EFLAGS. */ 1089 uint32_t eflags = EMEmulateAnd(&uData1, uData2, cb Size);1089 uint32_t eflags = EMEmulateAnd(&uData1, uData2, cb); 1090 1090 pRegFrame->eflags.u32 = (pRegFrame->eflags.u32 & ~(X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_OF)) 1091 1091 | (eflags & (X86_EFL_CF | X86_EFL_PF | X86_EFL_AF | X86_EFL_ZF | X86_EFL_SF | X86_EFL_OF)); 1092 1092 STAM_PROFILE_STOP(&pVM->iom.s.StatGCInstTest, a1); 1093 iomMMIOStatLength(pVM, cb Size);1093 iomMMIOStatLength(pVM, cb); 1094 1094 } 1095 1095 … … 1117 1117 1118 1118 /* Check read callback. */ 1119 unsigned cb Size= 0;1119 unsigned cb = 0; 1120 1120 uint32_t uData1; 1121 1121 uint32_t uData2; … … 1128 1128 } 1129 1129 1130 if (iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &uData1, &cb Size))1130 if (iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &uData1, &cb)) 1131 1131 { 1132 1132 /* xchg reg, [MMIO]. */ 1133 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData2, cb Size);1133 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData2, cb); 1134 1134 if (rc == VINF_SUCCESS) 1135 1135 { 1136 1136 /* Store result to MMIO. */ 1137 rc = iomMMIODoWrite(pVM, pRange, GCPhysFault, &uData1, cb Size);1137 rc = iomMMIODoWrite(pVM, pRange, GCPhysFault, &uData1, cb); 1138 1138 1139 1139 if (rc == VINF_SUCCESS) … … 1150 1150 } 1151 1151 else 1152 if (iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &uData2, &cb Size))1152 if (iomGetRegImmData(pCpu, &pCpu->param2, pRegFrame, &uData2, &cb)) 1153 1153 { 1154 1154 /* xchg [MMIO], reg. */ 1155 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData1, cb Size);1155 rc = iomMMIODoRead(pVM, pRange, GCPhysFault, &uData1, cb); 1156 1156 if (rc == VINF_SUCCESS) 1157 1157 { 1158 1158 /* Store result to MMIO. */ 1159 rc = iomMMIODoWrite(pVM, pRange, GCPhysFault, &uData2, cb Size);1159 rc = iomMMIODoWrite(pVM, pRange, GCPhysFault, &uData2, cb); 1160 1160 1161 1161 if (rc == VINF_SUCCESS) … … 1412 1412 #ifdef VBOX_WITH_STATISTICS 1413 1413 PIOMMMIOSTATS pStats = iomMMIOGetStats(&pVM->iom.s, GCPhys); 1414 if (!pStats && (!pRange || pRange->cb Size<= PAGE_SIZE))1414 if (!pStats && (!pRange || pRange->cb <= PAGE_SIZE)) 1415 1415 # ifdef IN_RING3 1416 1416 pStats = iomR3MMIOStatsCreate(pVM, GCPhys, pRange ? pRange->pszDesc : NULL); … … 1513 1513 #ifdef VBOX_WITH_STATISTICS 1514 1514 PIOMMMIOSTATS pStats = iomMMIOGetStats(&pVM->iom.s, GCPhys); 1515 if (!pStats && (!pRange || pRange->cb Size<= PAGE_SIZE))1515 if (!pStats && (!pRange || pRange->cb <= PAGE_SIZE)) 1516 1516 # ifdef IN_RING3 1517 1517 pStats = iomR3MMIOStatsCreate(pVM, GCPhys, pRange ? pRange->pszDesc : NULL); … … 1707 1707 * disassembler). And get the I/O register size from the opcode / prefix. 1708 1708 */ 1709 uint32_t uPort = pRegFrame->edx & 0xffff;1710 unsigned cb Size= 0;1709 RTIOPORT Port = pRegFrame->edx & 0xffff; 1710 unsigned cb = 0; 1711 1711 if (pCpu->pCurInstr->opcode == OP_INSB) 1712 cb Size= 1;1712 cb = 1; 1713 1713 else 1714 cb Size= pCpu->opmode == CPUMODE_32BIT ? 4 : 2;1715 1716 int rc = IOMInterpretCheckPortIOAccess(pVM, pRegFrame, uPort, cbSize);1714 cb = pCpu->opmode == CPUMODE_32BIT ? 4 : 2; 1715 1716 int rc = IOMInterpretCheckPortIOAccess(pVM, pRegFrame, Port, cb); 1717 1717 if (RT_UNLIKELY(rc != VINF_SUCCESS)) 1718 1718 { … … 1721 1721 } 1722 1722 1723 return IOMInterpretINSEx(pVM, pRegFrame, uPort, pCpu->prefix, cbSize);1723 return IOMInterpretINSEx(pVM, pRegFrame, Port, pCpu->prefix, cb); 1724 1724 } 1725 1725 … … 1865 1865 * And get the I/O register size from the opcode / prefix. 1866 1866 */ 1867 uint32_t uPort = 0;1868 unsigned cb Size= 0;1869 bool fRc = iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, & uPort, &cbSize);1867 uint32_t Port = 0; 1868 unsigned cb = 0; 1869 bool fRc = iomGetRegImmData(pCpu, &pCpu->param1, pRegFrame, &Port, &cb); 1870 1870 AssertMsg(fRc, ("Failed to get reg/imm port number!\n")); NOREF(fRc); 1871 1871 if (pCpu->pCurInstr->opcode == OP_OUTSB) 1872 cb Size= 1;1872 cb = 1; 1873 1873 else 1874 cb Size= (pCpu->opmode == CPUMODE_32BIT) ? 4 : 2;1875 1876 int rc = IOMInterpretCheckPortIOAccess(pVM, pRegFrame, uPort, cbSize);1874 cb = (pCpu->opmode == CPUMODE_32BIT) ? 4 : 2; 1875 1876 int rc = IOMInterpretCheckPortIOAccess(pVM, pRegFrame, Port, cb); 1877 1877 if (RT_UNLIKELY(rc != VINF_SUCCESS)) 1878 1878 { … … 1881 1881 } 1882 1882 1883 return IOMInterpretOUTSEx(pVM, pRegFrame, uPort, pCpu->prefix, cbSize);1884 } 1885 1883 return IOMInterpretOUTSEx(pVM, pRegFrame, Port, pCpu->prefix, cb); 1884 } 1885 -
trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp
r7715 r7731 125 125 GEN_CHECK_SIZE(IOMMMIORANGER0); 126 126 GEN_CHECK_OFF(IOMMMIORANGER0, GCPhys); 127 GEN_CHECK_OFF(IOMMMIORANGER0, cb Size);127 GEN_CHECK_OFF(IOMMMIORANGER0, cb); 128 128 GEN_CHECK_OFF(IOMMMIORANGER0, pvUser); 129 129 GEN_CHECK_OFF(IOMMMIORANGER0, pDevIns); … … 133 133 GEN_CHECK_SIZE(IOMMMIORANGEGC); 134 134 GEN_CHECK_OFF(IOMMMIORANGEGC, GCPhys); 135 GEN_CHECK_OFF(IOMMMIORANGEGC, cb Size);135 GEN_CHECK_OFF(IOMMMIORANGEGC, cb); 136 136 GEN_CHECK_OFF(IOMMMIORANGEGC, pvUser); 137 137 GEN_CHECK_OFF(IOMMMIORANGEGC, pDevIns);
Note:
See TracChangeset
for help on using the changeset viewer.