Changeset 108826 in vbox
- Timestamp:
- Apr 2, 2025 9:12:22 AM (5 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168272
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/VBox/gic.h
r108824 r108826 419 419 #define GIC_REDIST_REG_CTLR_OFF 0x0000 420 420 /** Bit 0 - Enable LPIs. */ 421 #define GIC_ DIST_REG_CTLR_ENABLE_LPI_BIT0422 #define GIC_ DIST_REG_CTLR_ENABLE_LPIRT_BIT_32(0)421 #define GIC_REDIST_REG_CTLR_ENABLE_LPI_BIT 0 422 #define GIC_REDIST_REG_CTLR_ENABLE_LPI RT_BIT_32(0) 423 423 /** Bit 1 - Clear Enable Support. */ 424 #define GIC_ DIST_REG_CTLR_CES_BIT1425 #define GIC_ DIST_REG_CTLR_CESRT_BIT_32(1)426 #define GIC_REDIST_REG_CTLR_CES_SET(a_Ces) (((a_Ces) << GIC_ DIST_REG_CTLR_CES_BIT) & GIC_DIST_REG_CTLR_CES)424 #define GIC_REDIST_REG_CTLR_CES_BIT 1 425 #define GIC_REDIST_REG_CTLR_CES RT_BIT_32(1) 426 #define GIC_REDIST_REG_CTLR_CES_SET(a_Ces) (((a_Ces) << GIC_REDIST_REG_CTLR_CES_BIT) & GIC_REDIST_REG_CTLR_CES) 427 427 /** Bit 2 - LPI invalidate registers supported. */ 428 #define GIC_ DIST_REG_CTLR_IR_BIT2429 #define GIC_ DIST_REG_CTLR_IRRT_BIT_32(2)428 #define GIC_REDIST_REG_CTLR_IR_BIT 2 429 #define GIC_REDIST_REG_CTLR_IR RT_BIT_32(2) 430 430 /** Bit 3 - Register Write Pending. */ 431 #define GIC_ DIST_REG_CTLR_RWP_BIT3432 #define GIC_ DIST_REG_CTLR_RWPRT_BIT_32(3)431 #define GIC_REDIST_REG_CTLR_RWP_BIT 3 432 #define GIC_REDIST_REG_CTLR_RWP RT_BIT_32(3) 433 433 /** Bit 24 - Disable Processor selection for Group 0 interrupt. */ 434 #define GIC_ DIST_REG_CTLR_DPG0_BIT24435 #define GIC_ DIST_REG_CTLR_DPG0RT_BIT_32(24)434 #define GIC_REDIST_REG_CTLR_DPG0_BIT 24 435 #define GIC_REDIST_REG_CTLR_DPG0 RT_BIT_32(24) 436 436 /** Bit 25 - Disable Processor selection for Group 1 non-secure interrupt. */ 437 #define GIC_ DIST_REG_CTLR_DPG1NS_BIT25438 #define GIC_ DIST_REG_CTLR_DPG1NSRT_BIT_32(25)437 #define GIC_REDIST_REG_CTLR_DPG1NS_BIT 25 438 #define GIC_REDIST_REG_CTLR_DPG1NS RT_BIT_32(25) 439 439 /** Bit 26 - Disable Processor selection for Group 1 secure interrupt. */ 440 #define GIC_ DIST_REG_CTLR_DPG1S_BIT26441 #define GIC_ DIST_REG_CTLR_DPG1SRT_BIT_32(26)440 #define GIC_REDIST_REG_CTLR_DPG1S_BIT 26 441 #define GIC_REDIST_REG_CTLR_DPG1S RT_BIT_32(26) 442 442 /** Bit 31 - Upstream Write Pending. */ 443 #define GIC_ DIST_REG_CTLR_UWP_BIT31444 #define GIC_ DIST_REG_CTLR_UWPRT_BIT_32(31)443 #define GIC_REDIST_REG_CTLR_UWP_BIT 31 444 #define GIC_REDIST_REG_CTLR_UWP RT_BIT_32(31) 445 445 446 446 /** Implementer Identification Register - RO. */ … … 555 555 /** Redistributor LPI Pending Table Base Address Register - RW. */ 556 556 #define GIC_REDIST_REG_PENDBASER_OFF 0x0078 557 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_6_0_SHIFT 0 558 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_6_0_MASK UINT64_C(0x000000000000007f) 559 #define GIC_BF_REDIST_REG_PENDBASER_INNER_CACHE_SHIFT 7 560 #define GIC_BF_REDIST_REG_PENDBASER_INNER_CACHE_MASK UINT64_C(0x0000000000000380) 561 #define GIC_BF_REDIST_REG_PENDBASER_SHAREABILITY_SHIFT 10 562 #define GIC_BF_REDIST_REG_PENDBASER_SHAREABILITY_MASK UINT64_C(0x0000000000000c00) 563 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_15_12_SHIFT 12 564 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_15_12_MASK UINT64_C(0x000000000000f000) 565 #define GIC_BF_REDIST_REG_PENDBASER_PHYS_ADDR_SHIFT 16 566 #define GIC_BF_REDIST_REG_PENDBASER_PHYS_ADDR_MASK UINT64_C(0x000fffffffff0000) 567 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_55_52_SHIFT 52 568 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_55_52_MASK UINT64_C(0x00f0000000000000) 569 #define GIC_BF_REDIST_REG_PENDBASER_OUTER_CACHE_SHIFT 56 570 #define GIC_BF_REDIST_REG_PENDBASER_OUTER_CACHE_MASK UINT64_C(0x0700000000000000) 571 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_61_59_SHIFT 59 572 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_61_59_MASK UINT64_C(0x3800000000000000) 573 #define GIC_BF_REDIST_REG_PENDBASER_PTZ_SHIFT 62 574 #define GIC_BF_REDIST_REG_PENDBASER_PTZ_MASK UINT64_C(0x4000000000000000) 575 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_63_SHIFT 63 576 #define GIC_BF_REDIST_REG_PENDBASER_RSVD_63_MASK UINT64_C(0x8000000000000000) 577 RT_BF_ASSERT_COMPILE_CHECKS(GIC_BF_REDIST_REG_PENDBASER_, UINT64_C(0), UINT64_MAX, 578 (RSVD_6_0, INNER_CACHE, SHAREABILITY, RSVD_15_12, PHYS_ADDR, RSVD_55_52, OUTER_CACHE, RSVD_61_59, 579 PTZ, RSVD_63)); 580 #define GIC_REDIST_REG_PENDBASER_RW_MASK (UINT64_MAX & ~( GIC_BF_REDIST_REG_PENDBASER_RSVD_6_0_MASK \ 581 | GIC_BF_REDIST_REG_PENDBASER_RSVD_15_12_MASK \ 582 | GIC_BF_REDIST_REG_PENDBASER_RSVD_55_52_MASK \ 583 | GIC_BF_REDIST_REG_PENDBASER_RSVD_61_59_MASK \ 584 | GIC_BF_REDIST_REG_PENDBASER_RSVD_63_MASK)) 585 557 586 /** Redistributor Invalidate LPI Register - WO. */ 558 587 #define GIC_REDIST_REG_INVLPIR_OFF 0x00a0 -
trunk/src/VBox/VMM/VMMAll/GICAll.cpp
r108824 r108826 2290 2290 DECLINLINE(VBOXSTRICTRC) gicReDistReadRegister(PPDMDEVINS pDevIns, PVMCPUCC pVCpu, uint32_t idRedist, uint16_t offReg, uint32_t *puValue) 2291 2291 { 2292 P GICDEV pGicDev = PDMDEVINS_2_DATA(pDevIns, PGICDEV);2292 PCGICDEV pGicDev = PDMDEVINS_2_DATA(pDevIns, PGICDEV); 2293 2293 AssertRelease(idRedist == pVCpu->idCpu); 2294 2294 switch (offReg) … … 2319 2319 break; 2320 2320 case GIC_REDIST_REG_CTLR_OFF: 2321 *puValue = pGicDev->fEnableLpis ? GIC_DIST_REG_CTLR_ENABLE_LPI : 02321 *puValue = (pGicDev->fEnableLpis ? GIC_REDIST_REG_CTLR_ENABLE_LPI : 0) 2322 2322 | GIC_REDIST_REG_CTLR_CES_SET(1); 2323 2323 break; … … 2327 2327 case GIC_REDIST_REG_PROPBASER_OFF + 4: 2328 2328 *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; 2329 2335 break; 2330 2336 default: … … 2454 2460 Assert(uValue == 0); 2455 2461 break; 2462 case GIC_REDIST_REG_CTLR_OFF: 2463 pGicDev->fEnableLpis = RT_BOOL(uValue & GIC_REDIST_REG_CTLR_ENABLE_LPI); 2464 break; 2456 2465 case GIC_REDIST_REG_PROPBASER_OFF: 2457 2466 pGicDev->uLpiConfigBaseReg.s.Lo = uValue & RT_LO_U32(GIC_REDIST_REG_PROPBASER_RW_MASK); … … 2459 2468 case GIC_REDIST_REG_PROPBASER_OFF + 4: 2460 2469 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); 2461 2476 break; 2462 2477 default: -
trunk/src/VBox/VMM/include/GICInternal.h
r108824 r108826 141 141 /** ITS device state. */ 142 142 GITSDEV Gits; 143 /** LPI config table (priority + enabled bit). */143 /** LPI config table. */ 144 144 uint8_t abLpiConfig[2048]; 145 145 /** LPI pending bitmap. */ 146 146 uint32_t bmLpiPending[64]; 147 /** The LPI config table base addressregister (GICR_PROPBASER). */147 /** The LPI config table base register (GICR_PROPBASER). */ 148 148 RTUINT64U uLpiConfigBaseReg; 149 /** Whether LPIs are enabled (GICR_CTLR.EnableLpis) common to all 150 * redistributors). */ 149 /** The LPI pending table base register (GICR_PENDBASER). */ 150 RTUINT64U uLpiPendingBaseReg; 151 /** Whether LPIs are enabled (GICR_CTLR.EnableLpis of all redistributors). */ 151 152 bool fEnableLpis; 152 153 /** Padding. */
Note:
See TracChangeset
for help on using the changeset viewer.