summaryrefslogtreecommitdiff
path: root/src/cpu/base.hh
diff options
context:
space:
mode:
authorAnouk Van Laer <anouk.vanlaer@arm.com>2017-03-17 12:02:00 +0000
committerAndreas Sandberg <andreas.sandberg@arm.com>2017-11-20 11:03:03 +0000
commitc0d613adb4eca09c32aca1cc90f04c29574f69c6 (patch)
tree1c2a0d26778d8b8ca3f0b359f990dc695156bf8f /src/cpu/base.hh
parentd626f4f7aaa4d2c9f7ae1afc35577fa025b4de38 (diff)
downloadgem5-c0d613adb4eca09c32aca1cc90f04c29574f69c6.tar.xz
pwr: Adds logic to enter power gating for the cpu model
If the CPU has been clock gated for a sufficient amount of time (configurable via pwrGatingLatency), the CPU will go into the OFF power state. This does not model hardware, just behaviour. Change-Id: Ib3681d1ffa6ad25eba60f47b4020325f63472d43 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/3969 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/cpu/base.hh')
-rw-r--r--src/cpu/base.hh12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/cpu/base.hh b/src/cpu/base.hh
index 79a4bf1d6..7039fcfbc 100644
--- a/src/cpu/base.hh
+++ b/src/cpu/base.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2013 ARM Limited
+ * Copyright (c) 2011-2013, 2017 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -307,6 +307,11 @@ class BaseCPU : public MemObject
void registerThreadContexts();
+ // Functions to deschedule and reschedule the events to enter the
+ // power gating sleep before and after checkpoiting respectively.
+ void deschedulePowerGatingEvent();
+ void schedulePowerGatingEvent();
+
/**
* Prepare for another CPU to take over execution.
*
@@ -583,6 +588,11 @@ class BaseCPU : public MemObject
bool waitForRemoteGDB() const;
Cycles syscallRetryLatency;
+ // Enables CPU to enter power gating on a configurable cycle count
+ protected:
+ const Cycles pwrGatingLatency;
+ void enterPwrGating();
+ EventFunctionWrapper enterPwrGatingEvent;
};
#endif // THE_ISA == NULL_ISA