diff options
Diffstat (limited to 'src/dev/arm/vgic.cc')
-rw-r--r-- | src/dev/arm/vgic.cc | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dev/arm/vgic.cc b/src/dev/arm/vgic.cc index 6744ad513..cc8ad7788 100644 --- a/src/dev/arm/vgic.cc +++ b/src/dev/arm/vgic.cc @@ -53,7 +53,9 @@ VGic::VGic(const Params *p) maintInt(p->ppint) { for (int x = 0; x < VGIC_CPU_MAX; x++) { - postVIntEvent[x] = new PostVIntEvent(x, p->platform); + postVIntEvent[x] = new EventFunctionWrapper( + [this, x]{ processPostVIntEvent(x); }, + "Post VInterrupt to CPU"); maintIntPosted[x] = false; vIntPosted[x] = false; } @@ -369,6 +371,13 @@ VGic::unPostVInt(uint32_t cpu) } void +VGic::processPostVIntEvent(uint32_t cpu) +{ + platform->intrctrl->post(cpu, ArmISA::INT_VIRT_IRQ, 0); +} + + +void VGic::postMaintInt(uint32_t cpu) { DPRINTF(VGIC, "Posting maintenance PPI to GIC/cpu%d\n", cpu); |