summaryrefslogtreecommitdiff
path: root/src/dev/arm/vgic.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev/arm/vgic.cc')
-rw-r--r--src/dev/arm/vgic.cc11
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);