summaryrefslogtreecommitdiff
path: root/src/dev/arm/rv_ctrl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/dev/arm/rv_ctrl.cc')
-rw-r--r--src/dev/arm/rv_ctrl.cc25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/dev/arm/rv_ctrl.cc b/src/dev/arm/rv_ctrl.cc
index 507def0c1..f89f23b59 100644
--- a/src/dev/arm/rv_ctrl.cc
+++ b/src/dev/arm/rv_ctrl.cc
@@ -37,11 +37,14 @@
* Authors: Ali Saidi
*/
+#include "dev/arm/rv_ctrl.hh"
+
#include "base/trace.hh"
#include "debug/RVCTRL.hh"
-#include "dev/arm/rv_ctrl.hh"
#include "mem/packet.hh"
#include "mem/packet_access.hh"
+#include "sim/power/thermal_model.hh"
+#include "sim/system.hh"
#include "sim/voltage_domain.hh"
RealViewCtrl::RealViewCtrl(Params *p)
@@ -293,7 +296,21 @@ RealViewOsc::write(uint32_t freq)
clockPeriod(SimClock::Float::s / freq);
}
+uint32_t
+RealViewTemperatureSensor::read() const
+{
+ // Temperature reported in uC
+ ThermalModel * tm = system->getThermalModel();
+ if (tm) {
+ double t = tm->getTemp();
+ if (t < 0)
+ warn("Temperature below zero!\n");
+ return fmax(0, t) * 1000000;
+ }
+ // Report a dummy 25 degrees temperature
+ return 25000000;
+}
RealViewCtrl *
RealViewCtrlParams::create()
@@ -306,3 +323,9 @@ RealViewOscParams::create()
{
return new RealViewOsc(this);
}
+
+RealViewTemperatureSensor *
+RealViewTemperatureSensorParams::create()
+{
+ return new RealViewTemperatureSensor(this);
+}