From c73c19effd8f7f9b6e2ec470f04b8f1f43ce7354 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sun, 13 Oct 2019 22:02:35 -0700 Subject: cpu: Make accesses to comInstEventQueue indirect through methods. This lets us move the event queue itself around, or change how those services are provided. Change-Id: Ie36665b353cf9788968f253cf281a854a6eff4f4 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/22107 Reviewed-by: Andreas Sandberg Maintainer: Gabe Black Tested-by: kokoro --- src/cpu/kvm/base.cc | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'src/cpu/kvm') diff --git a/src/cpu/kvm/base.cc b/src/cpu/kvm/base.cc index 0b3888976..384abb0eb 100644 --- a/src/cpu/kvm/base.cc +++ b/src/cpu/kvm/base.cc @@ -630,9 +630,7 @@ BaseKvmCPU::tick() case RunningServiceCompletion: case Running: { - const uint64_t nextInstEvent( - !comInstEventQueue[0]->empty() ? - comInstEventQueue[0]->nextTick() : UINT64_MAX); + const uint64_t nextInstEvent(nextInstEventCount(0)); // Enter into KVM and complete pending IO instructions if we // have an instruction event pending. const Tick ticksToExecute( @@ -688,7 +686,7 @@ BaseKvmCPU::tick() // Service any pending instruction events. The vCPU should // have exited in time for the event using the instruction // counter configured by setupInstStop(). - comInstEventQueue[0]->serviceEvents(ctrInsts); + serviceInstCountEvents(0, ctrInsts); if (tryDrain()) _status = Idle; @@ -1348,11 +1346,10 @@ BaseKvmCPU::ioctlRun() void BaseKvmCPU::setupInstStop() { - if (comInstEventQueue[0]->empty()) { + Tick next = nextInstEventCount(0); + if (next == MaxTick) { setupInstCounter(0); } else { - const uint64_t next(comInstEventQueue[0]->nextTick()); - assert(next > ctrInsts); setupInstCounter(next - ctrInsts); } -- cgit v1.2.3