VirtualBox

Ignore:
Timestamp:
Apr 2, 2025 9:12:22 AM (5 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168272
Message:

VMM/GIC: bugref:10877 GIC ITS work-in-progress. LPI handling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMAll/GICAll.cpp

    r108824 r108826  
    22902290DECLINLINE(VBOXSTRICTRC) gicReDistReadRegister(PPDMDEVINS pDevIns, PVMCPUCC pVCpu, uint32_t idRedist, uint16_t offReg, uint32_t *puValue)
    22912291{
    2292     PGICDEV pGicDev = PDMDEVINS_2_DATA(pDevIns, PGICDEV);
     2292    PCGICDEV pGicDev = PDMDEVINS_2_DATA(pDevIns, PGICDEV);
    22932293    AssertRelease(idRedist == pVCpu->idCpu);
    22942294    switch (offReg)
     
    23192319            break;
    23202320        case GIC_REDIST_REG_CTLR_OFF:
    2321             *puValue = pGicDev->fEnableLpis ? GIC_DIST_REG_CTLR_ENABLE_LPI : 0
     2321            *puValue = (pGicDev->fEnableLpis ? GIC_REDIST_REG_CTLR_ENABLE_LPI : 0)
    23222322                     | GIC_REDIST_REG_CTLR_CES_SET(1);
    23232323            break;
     
    23272327        case GIC_REDIST_REG_PROPBASER_OFF + 4:
    23282328            *puValue = pGicDev->uLpiConfigBaseReg.s.Hi;
     2329            break;
     2330        case GIC_REDIST_REG_PENDBASER_OFF:
     2331            *puValue = pGicDev->uLpiPendingBaseReg.s.Lo;
     2332            break;
     2333        case GIC_REDIST_REG_PENDBASER_OFF + 4:
     2334            *puValue = pGicDev->uLpiPendingBaseReg.s.Hi;
    23292335            break;
    23302336        default:
     
    24542460            Assert(uValue == 0);
    24552461            break;
     2462        case GIC_REDIST_REG_CTLR_OFF:
     2463            pGicDev->fEnableLpis = RT_BOOL(uValue & GIC_REDIST_REG_CTLR_ENABLE_LPI);
     2464            break;
    24562465        case GIC_REDIST_REG_PROPBASER_OFF:
    24572466            pGicDev->uLpiConfigBaseReg.s.Lo = uValue & RT_LO_U32(GIC_REDIST_REG_PROPBASER_RW_MASK);
     
    24592468        case GIC_REDIST_REG_PROPBASER_OFF + 4:
    24602469            pGicDev->uLpiConfigBaseReg.s.Hi = uValue & RT_HI_U32(GIC_REDIST_REG_PROPBASER_RW_MASK);
     2470            break;
     2471        case GIC_REDIST_REG_PENDBASER_OFF:
     2472            pGicDev->uLpiPendingBaseReg.s.Lo = uValue & RT_LO_U32(GIC_REDIST_REG_PENDBASER_RW_MASK);
     2473            break;
     2474        case GIC_REDIST_REG_PENDBASER_OFF + 4:
     2475            pGicDev->uLpiPendingBaseReg.s.Hi = uValue & RT_HI_U32(GIC_REDIST_REG_PENDBASER_RW_MASK);
    24612476            break;
    24622477        default:
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette