summaryrefslogtreecommitdiff
path: root/src/cpu/simple/atomic.cc
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2014-12-05 01:47:35 -0800
committerGabe Black <gabeblack@google.com>2014-12-05 01:47:35 -0800
commitbacbb8ecbcee2b4c5c3fe71f415abc5852ae4a8f (patch)
tree79e771d5209f85f6d3ecf5cafcb5d9e254fa7be0 /src/cpu/simple/atomic.cc
parentfe48c0a32bf749358eeb95e748f9fc2247cc5480 (diff)
downloadgem5-bacbb8ecbcee2b4c5c3fe71f415abc5852ae4a8f.tar.xz
cpu: Only check for PC events on instruction boundaries.
Only the instruction address is actually checked, so there's no need to check repeatedly while we're working through the microops of a macroop and that's not changing.
Diffstat (limited to 'src/cpu/simple/atomic.cc')
-rw-r--r--src/cpu/simple/atomic.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc
index 8dcae01c5..aeaebcdb8 100644
--- a/src/cpu/simple/atomic.cc
+++ b/src/cpu/simple/atomic.cc
@@ -1,4 +1,5 @@
/*
+ * Copyright 2014 Google, Inc.
* Copyright (c) 2012-2013 ARM Limited
* All rights reserved.
*
@@ -518,10 +519,11 @@ AtomicSimpleCPU::tick()
numCycles++;
ppCycles->notify(1);
- if (!curStaticInst || !curStaticInst->isDelayedCommit())
+ if (!curStaticInst || !curStaticInst->isDelayedCommit()) {
checkForInterrupts();
+ checkPcEventQueue();
+ }
- checkPcEventQueue();
// We must have just got suspended by a PC event
if (_status == Idle) {
tryCompleteDrain();