Changeset 108464 in vbox for trunk/src/VBox/VMM/VMMAll/GICAll.cpp
- Timestamp:
- Mar 6, 2025 8:30:37 AM (7 weeks ago)
- svn:sync-xref-src-repo-rev:
- 167838
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMAll/GICAll.cpp
r108452 r108464 2244 2244 break; 2245 2245 case GIC_DIST_REG_TYPER_OFF: 2246 Assert(pGicDev->uMaxSpi > 0 && pGicDev->uMaxSpi < GIC_DIST_REG_TYPER_NUM_ITLINES); 2246 { 2247 Assert(pGicDev->uMaxSpi > 0 && pGicDev->uMaxSpi <= GIC_DIST_REG_TYPER_NUM_ITLINES); 2248 Assert(pGicDev->fAffRoutingEnabled); 2247 2249 *puValue = GIC_DIST_REG_TYPER_NUM_ITLINES_SET(pGicDev->uMaxSpi) 2248 | GIC_DIST_REG_TYPER_NUM_PES_SET(0) /* 1 PE */ /** @todo r=ramshankar: Should this be pVCpu->cCpus? Currently it means 'ARE' must always be used? */ 2249 /*| GIC_DIST_REG_TYPER_ESPI*/ /** @todo */ 2250 /*| GIC_DIST_REG_TYPER_NMI*/ /** @todo Non-maskable interrupts */ 2251 /*| GIC_DIST_REG_TYPER_SECURITY_EXTN */ /** @todo */ 2252 /*| GIC_DIST_REG_TYPER_MBIS */ /** @todo Message based interrupts */ 2250 | GIC_DIST_REG_TYPER_NUM_PES_SET(0) /* Affinity routing is always enabled, hence this MBZ. */ 2251 /*| GIC_DIST_REG_TYPER_NMI*/ /** @todo Support non-maskable interrupts */ 2252 /*| GIC_DIST_REG_TYPER_SECURITY_EXTN */ /** @todo Support dual security states. */ 2253 /*| GIC_DIST_REG_TYPER_MBIS */ /** @todo Support message-based interrupts */ 2253 2254 /*| GIC_DIST_REG_TYPER_LPIS */ /** @todo Support LPIs */ 2254 2255 | (pGicDev->fRangeSelSupport ? GIC_DIST_REG_TYPER_RSS : 0) 2255 | GIC_DIST_REG_TYPER_IDBITS_SET(16); 2256 break; 2256 | GIC_DIST_REG_TYPER_IDBITS_SET(16); /* We only support 16-bit interrupt IDs. */ 2257 if (pGicDev->fExtSpi) 2258 *puValue |= GIC_DIST_REG_TYPER_ESPI 2259 | GIC_DIST_REG_TYPER_ESPI_RANGE_SET(pGicDev->uMaxExtSpi); 2260 break; 2261 } 2257 2262 case GIC_DIST_REG_STATUSR_OFF: 2258 2263 AssertReleaseFailed(); … … 2702 2707 { 2703 2708 PGICDEV pGicDev = PDMDEVINS_2_DATA(pDevIns, PGICDEV); 2704 Assert (idRedist == pVCpu->idCpu); /* Assert for now, maybe remove function parameter later. */2709 AssertRelease(idRedist == pVCpu->idCpu); 2705 2710 switch (offReg) 2706 2711 { 2707 2712 case GIC_REDIST_REG_TYPER_OFF: 2708 2713 { 2709 PCVMCC pVM = PDMDevHlpGetVM(pDevIns);2710 *puValue = ( (pVCpu->idCpu == pVM->cCpus - 1)? GIC_REDIST_REG_TYPER_LAST : 0)2714 PCVMCC pVM = pVCpu->CTX_SUFF(pVM); 2715 *puValue = (pVCpu->idCpu == pVM->cCpus - 1 ? GIC_REDIST_REG_TYPER_LAST : 0) 2711 2716 | GIC_REDIST_REG_TYPER_CPU_NUMBER_SET(idRedist) 2712 | GIC_REDIST_REG_TYPER_CMN_LPI_AFF_SET(GIC_REDIST_REG_TYPER_CMN_LPI_AFF_ALL); 2717 | GIC_REDIST_REG_TYPER_CMN_LPI_AFF_SET(GIC_REDIST_REG_TYPER_CMN_LPI_AFF_ALL) 2718 | (pGicDev->fExtPpi ? GIC_REDIST_REG_TYPER_PPI_NUM_SET(pGicDev->uMaxExtPpi) : 0); 2719 Assert(!pGicDev->fExtPpi || pGicDev->uMaxExtPpi > 0); 2713 2720 break; 2714 2721 }
Note:
See TracChangeset
for help on using the changeset viewer.