summaryrefslogtreecommitdiff
path: root/src/cpu
diff options
context:
space:
mode:
authorSteve Reinhardt <steve.reinhardt@amd.com>2011-01-07 21:50:29 -0800
committerSteve Reinhardt <steve.reinhardt@amd.com>2011-01-07 21:50:29 -0800
commitd60c293bbc9125eb939a08831b86a3f38920cdd4 (patch)
tree06291cb8c39407adb71d30e29008649de443e124 /src/cpu
parent214cc0fafce09dbee6aedafa5e1148476cc6463f (diff)
downloadgem5-d60c293bbc9125eb939a08831b86a3f38920cdd4.tar.xz
inorder: replace schedEvent() code with reschedule().
There were several copies of similar functions that looked like they all replicated reschedule(), so I replaced them with direct calls. Keeping this separate from the previous cset since there may be some subtle functional differences if the code ever reschedules an event that is scheduled but not squashed (though none were detected in the regressions).
Diffstat (limited to 'src/cpu')
-rw-r--r--src/cpu/inorder/cpu.cc8
-rw-r--r--src/cpu/inorder/cpu.hh8
-rw-r--r--src/cpu/inorder/resource.cc10
-rw-r--r--src/cpu/inorder/resource_pool.cc9
4 files changed, 9 insertions, 26 deletions
diff --git a/src/cpu/inorder/cpu.cc b/src/cpu/inorder/cpu.cc
index bb324ce64..5b5f524f2 100644
--- a/src/cpu/inorder/cpu.cc
+++ b/src/cpu/inorder/cpu.cc
@@ -157,12 +157,8 @@ InOrderCPU::CPUEvent::description()
void
InOrderCPU::CPUEvent::scheduleEvent(int delay)
{
- Tick when = cpu->nextCycle(curTick + cpu->ticks(delay));
-
- if (squashed())
- cpu->reschedule(this, when);
- else if (!scheduled())
- cpu->schedule(this, when);
+ assert(!scheduled() || squashed());
+ cpu->reschedule(this, cpu->nextCycle(curTick + cpu->ticks(delay)), true);
}
void
diff --git a/src/cpu/inorder/cpu.hh b/src/cpu/inorder/cpu.hh
index 42bae0d31..38978dbd7 100644
--- a/src/cpu/inorder/cpu.hh
+++ b/src/cpu/inorder/cpu.hh
@@ -156,12 +156,8 @@ class InOrderCPU : public BaseCPU
/** Schedule tick event, regardless of its current state. */
void scheduleTickEvent(int delay)
{
- Tick when = nextCycle(curTick + ticks(delay));
-
- if (tickEvent.squashed())
- reschedule(&tickEvent, when);
- else if (!tickEvent.scheduled())
- schedule(&tickEvent, when);
+ assert(!tickEvent.scheduled() || tickEvent.squashed());
+ reschedule(&tickEvent, nextCycle(curTick + ticks(delay)), true);
}
/** Unschedule tick event, regardless of its current state. */
diff --git a/src/cpu/inorder/resource.cc b/src/cpu/inorder/resource.cc
index 4eab89687..0d8dbb3e4 100644
--- a/src/cpu/inorder/resource.cc
+++ b/src/cpu/inorder/resource.cc
@@ -502,11 +502,7 @@ ResourceEvent::description()
void
ResourceEvent::scheduleEvent(int delay)
{
- InOrderCPU *cpu = resource->cpu;
- Tick when = curTick + resource->ticks(delay);
-
- if (squashed())
- cpu->reschedule(this, when);
- else if (!scheduled())
- cpu->schedule(this, when);
+ assert(!scheduled() || squashed());
+ resource->cpu->reschedule(this,
+ curTick + resource->ticks(delay), true);
}
diff --git a/src/cpu/inorder/resource_pool.cc b/src/cpu/inorder/resource_pool.cc
index 97ea889fd..e199d2bc2 100644
--- a/src/cpu/inorder/resource_pool.cc
+++ b/src/cpu/inorder/resource_pool.cc
@@ -541,13 +541,8 @@ void
ResourcePool::ResPoolEvent::scheduleEvent(int delay)
{
InOrderCPU *cpu = resPool->cpu;
- Tick when = cpu->nextCycle(curTick + cpu->ticks(delay));
-
- if (squashed()) {
- cpu->reschedule(this, when);
- } else if (!scheduled()) {
- cpu->schedule(this, when);
- }
+ assert(!scheduled() || squashed());
+ cpu->reschedule(this, cpu->nextCycle(curTick + cpu->ticks(delay)), true);
}
/** Unschedule resource event, regardless of its current state. */