Changeset 108529 in vbox for trunk/src/VBox/VMM/VMMAll/GICAll.cpp
- Timestamp:
- Mar 12, 2025 9:39:41 AM (6 weeks ago)
- svn:sync-xref-src-repo-rev:
- 167919
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/GICAll.cpp
r108527 r108529 703 703 Assert(pGicDev->fAffRoutingEnabled); 704 704 705 /* Hardware does not map the first 32 registers (corresponding to SGIs and PPIs). */ 706 idxReg += GIC_INTID_RANGE_SPI_START; 707 AssertReturn(idxReg < RT_ELEMENTS(pGicDev->au32IntrRouting), VERR_BUFFER_OVERFLOW); 705 AssertMsgReturn(idxReg < RT_ELEMENTS(pGicDev->au32IntrRouting), ("idxReg=%u\n", idxReg), VERR_BUFFER_OVERFLOW); 708 706 Assert(idxReg < sizeof(pGicDev->bmIntrRoutingMode) * 8); 709 707 if (!(idxReg % 2)) … … 889 887 { 890 888 uint16_t const idxPriority = idxReg * sizeof(uint32_t); 891 AssertReturn(idxPriority < RT_ELEMENTS(pGicDev->abIntrPriority) - sizeof(uint32_t), VERR_BUFFER_OVERFLOW);889 AssertReturn(idxPriority <= RT_ELEMENTS(pGicDev->abIntrPriority) - sizeof(uint32_t), VERR_BUFFER_OVERFLOW); 892 890 AssertCompile(sizeof(*puValue) == sizeof(uint32_t)); 893 891 *puValue = *(uint32_t *)&pGicDev->abIntrPriority[idxPriority]; … … 920 918 { 921 919 uint16_t const idxPriority = idxReg * sizeof(uint32_t); 922 AssertReturn(idxPriority < RT_ELEMENTS(pGicDev->abIntrPriority) - sizeof(uint32_t), VERR_BUFFER_OVERFLOW);920 AssertReturn(idxPriority <= RT_ELEMENTS(pGicDev->abIntrPriority) - sizeof(uint32_t), VERR_BUFFER_OVERFLOW); 923 921 AssertCompile(sizeof(uValue) == sizeof(uint32_t)); 924 922 *(uint32_t *)&pGicDev->abIntrPriority[idxPriority] = uValue; … … 1841 1839 if (offReg - GIC_DIST_REG_IROUTERn_OFF_START < GIC_DIST_REG_IROUTERn_RANGE_SIZE) 1842 1840 { 1843 uint16_t const idxReg = (offReg - GIC_DIST_REG_IROUTERn_OFF_START) / cbReg; 1841 /* Hardware does not map the first 32 registers (corresponding to SGIs and PPIs). */ 1842 uint16_t const idxExt = GIC_INTID_RANGE_SPI_START; 1843 uint16_t const idxReg = idxExt + (offReg - GIC_DIST_REG_IROUTERn_OFF_START) / sizeof(uint64_t); 1844 1844 return gicDistReadIntrRoutingReg(pGicDev, idxReg, puValue); 1845 1845 } … … 1847 1847 { 1848 1848 uint16_t const idxExt = RT_ELEMENTS(pGicDev->au32IntrRouting) / 2; 1849 uint16_t const idxReg = idxExt + (offReg - GIC_DIST_REG_IROUTERnE_OFF_START) / cbReg;1849 uint16_t const idxReg = idxExt + (offReg - GIC_DIST_REG_IROUTERnE_OFF_START) / sizeof(uint64_t); 1850 1850 return gicDistReadIntrRoutingReg(pGicDev, idxReg, puValue); 1851 1851 } … … 2080 2080 if (offReg - GIC_DIST_REG_IROUTERn_OFF_START < GIC_DIST_REG_IROUTERn_RANGE_SIZE) 2081 2081 { 2082 uint16_t const idxReg = (offReg - GIC_DIST_REG_IROUTERn_OFF_START) / cbReg; 2082 /* Hardware does not map the first 32 registers (corresponding to SGIs and PPIs). */ 2083 uint16_t const idxExt = GIC_INTID_RANGE_SPI_START; 2084 uint16_t const idxReg = idxExt + (offReg - GIC_DIST_REG_IROUTERn_OFF_START) / sizeof(uint64_t); 2083 2085 return gicDistWriteIntrRoutingReg(pGicDev, idxReg, uValue); 2084 2086 } … … 2086 2088 { 2087 2089 uint16_t const idxExt = RT_ELEMENTS(pGicDev->au32IntrRouting) / 2; 2088 uint16_t const idxReg = idxExt + (offReg - GIC_DIST_REG_IROUTERnE_OFF_START) / cbReg;2090 uint16_t const idxReg = idxExt + (offReg - GIC_DIST_REG_IROUTERnE_OFF_START) / sizeof(uint64_t); 2089 2091 return gicDistWriteIntrRoutingReg(pGicDev, idxReg, uValue); 2090 2092 }
Note:
See TracChangeset
for help on using the changeset viewer.