summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCurtis Dunham <Curtis.Dunham@arm.com>2017-09-07 16:13:54 -0500
committerCurtis Dunham <curtis.dunham@arm.com>2018-01-29 22:19:55 +0000
commit9f5b6e1b74c8289050836abdfb9c2539380f9105 (patch)
tree9b5dc7cdee74400580241907d8b50b3ed69a02ee
parent624a026a393104e6730731695d5d74addd65d79e (diff)
downloadgem5-9f5b6e1b74c8289050836abdfb9c2539380f9105.tar.xz
arm: make Arm GenericTimer a ClockedObject
Within a device tree, the GenericTimer device needs to point (via phandle) to a clock domain which is itself also an object in the device tree. Within gem5, clock domains are managed by making all clocked SimObjects inherit from ClockedObject rather than SimObject. Without this change, the GenericTimer is unable to generate the appropriate clock domain phandle, and will crash during DTB autogeneration. Change-Id: I6d3fb6362847c6a01720b2f14b3d595d1e59f01f Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/4960 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
-rw-r--r--src/dev/arm/RealView.py3
-rw-r--r--src/dev/arm/generic_timer.cc2
-rw-r--r--src/dev/arm/generic_timer.hh2
3 files changed, 4 insertions, 3 deletions
diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py
index 699b7dfb7..cd7772f32 100644
--- a/src/dev/arm/RealView.py
+++ b/src/dev/arm/RealView.py
@@ -54,6 +54,7 @@ from Uart import Uart
from SimpleMemory import SimpleMemory
from Gic import *
from EnergyCtrl import EnergyCtrl
+from ClockedObject import ClockedObject
from ClockDomain import SrcClockDomain
from SubSystem import SubSystem
from Graphics import ImageFormat
@@ -247,7 +248,7 @@ class CpuLocalTimer(BasicPioDevice):
int_num_timer = Param.UInt32("Interrrupt number used per-cpu to GIC")
int_num_watchdog = Param.UInt32("Interrupt number for per-cpu watchdog to GIC")
-class GenericTimer(SimObject):
+class GenericTimer(ClockedObject):
type = 'GenericTimer'
cxx_header = "dev/arm/generic_timer.hh"
system = Param.ArmSystem(Parent.any, "system")
diff --git a/src/dev/arm/generic_timer.cc b/src/dev/arm/generic_timer.cc
index f8433bd2d..73e4f9143 100644
--- a/src/dev/arm/generic_timer.cc
+++ b/src/dev/arm/generic_timer.cc
@@ -239,7 +239,7 @@ ArchTimer::Interrupt::clear()
GenericTimer::GenericTimer(GenericTimerParams *p)
- : SimObject(p),
+ : ClockedObject(p),
system(*p->system),
gic(p->gic),
irqPhys(p->int_phys),
diff --git a/src/dev/arm/generic_timer.hh b/src/dev/arm/generic_timer.hh
index ccfb1277f..c9cfb7497 100644
--- a/src/dev/arm/generic_timer.hh
+++ b/src/dev/arm/generic_timer.hh
@@ -226,7 +226,7 @@ class ArchTimerKvm : public ArchTimer
}
};
-class GenericTimer : public SimObject
+class GenericTimer : public ClockedObject
{
public:
GenericTimer(GenericTimerParams *p);