base.cc (10843:adec1cf1c300) base.cc (10858:6734ec272816)
1/*
1/*
2 * Copyright (c) 2012 ARM Limited
2 * Copyright (c) 2012, 2015 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

--- 517 unchanged lines hidden (view full) ---

528 delay = handleKvmExit();
529
530 if (tryDrain())
531 _status = Idle;
532 break;
533
534 case RunningServiceCompletion:
535 case Running: {
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

--- 517 unchanged lines hidden (view full) ---

528 delay = handleKvmExit();
529
530 if (tryDrain())
531 _status = Idle;
532 break;
533
534 case RunningServiceCompletion:
535 case Running: {
536 EventQueue *q = curEventQueue();
537 Tick ticksToExecute(q->nextTick() - curTick());
536 const uint64_t nextInstEvent(
537 !comInstEventQueue[0]->empty() ?
538 comInstEventQueue[0]->nextTick() : UINT64_MAX);
539 // Enter into KVM and complete pending IO instructions if we
540 // have an instruction event pending.
541 const Tick ticksToExecute(
542 nextInstEvent > ctrInsts ?
543 curEventQueue()->nextTick() - curTick() : 0);
538
539 // We might need to update the KVM state.
540 syncKvmState();
541
542 // Setup any pending instruction count breakpoints using
544
545 // We might need to update the KVM state.
546 syncKvmState();
547
548 // Setup any pending instruction count breakpoints using
543 // PerfEvent.
544 setupInstStop();
549 // PerfEvent if we are going to execute more than just an IO
550 // completion.
551 if (ticksToExecute > 0)
552 setupInstStop();
545
546 DPRINTF(KvmRun, "Entering KVM...\n");
547 if (drainManager) {
548 // Force an immediate exit from KVM after completing
549 // pending operations. The architecture-specific code
550 // takes care to run until it is in a state where it can
551 // safely be drained.
552 delay = kvmRunDrain();

--- 721 unchanged lines hidden ---
553
554 DPRINTF(KvmRun, "Entering KVM...\n");
555 if (drainManager) {
556 // Force an immediate exit from KVM after completing
557 // pending operations. The architecture-specific code
558 // takes care to run until it is in a state where it can
559 // safely be drained.
560 delay = kvmRunDrain();

--- 721 unchanged lines hidden ---