diff options
author | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2018-09-11 15:18:02 +0100 |
---|---|---|
committer | Giacomo Travaglini <giacomo.travaglini@arm.com> | 2018-09-28 10:53:54 +0000 |
commit | a43e3108b4a9bd34cf382588e2e3bc0b81381623 (patch) | |
tree | 8f81b3eaa81bf2f69413bf63101c0a238b89bcb0 /src/dev/arm/timer_cpulocal.hh | |
parent | 54bc94114f22dfd7960c9ba9045f42ff276c3305 (diff) | |
download | gem5-a43e3108b4a9bd34cf382588e2e3bc0b81381623.tar.xz |
dev-arm: Make CpuLocalTimer use standard ArmInterruptPin
Change-Id: I8c4eb9389b47df8cdf1eec966bb2c9da85a7a7c8
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/12744
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/dev/arm/timer_cpulocal.hh')
-rw-r--r-- | src/dev/arm/timer_cpulocal.hh | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/dev/arm/timer_cpulocal.hh b/src/dev/arm/timer_cpulocal.hh index 425f1fd6b..df4aa511a 100644 --- a/src/dev/arm/timer_cpulocal.hh +++ b/src/dev/arm/timer_cpulocal.hh @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2011 ARM Limited + * Copyright (c) 2010-2011,2018 ARM Limited * All rights reserved * * The license below extends only to copyright in the software and shall @@ -51,6 +51,7 @@ */ class BaseGic; +class ArmInterruptPin; class CpuLocalTimer : public BasicPioDevice { @@ -96,12 +97,9 @@ class CpuLocalTimer : public BasicPioDevice /** Pointer to parent class */ CpuLocalTimer *parent; - /** Number of interrupt to cause/clear */ - uint32_t intNumTimer; - uint32_t intNumWatchdog; - - /** Cpu this timer is attached to */ - uint32_t cpuNum; + /** Interrupt to cause/clear */ + ArmInterruptPin *intTimer; + ArmInterruptPin *intWatchdog; /** Control register as specified above */ TimerCtrl timerControl; @@ -135,7 +133,10 @@ class CpuLocalTimer : public BasicPioDevice void restartTimerCounter(uint32_t val); void restartWatchdogCounter(uint32_t val); - Timer(); + Timer(const std::string &name, + CpuLocalTimer* _parent, + ArmInterruptPin* int_timer, + ArmInterruptPin* int_watchdog); std::string name() const { return _name; } @@ -151,13 +152,11 @@ class CpuLocalTimer : public BasicPioDevice friend class CpuLocalTimer; }; - static const int CPU_MAX = 8; - /** Pointer to the GIC for causing an interrupt */ BaseGic *gic; /** Timers that do the actual work */ - Timer localTimer[CPU_MAX]; + std::vector<std::unique_ptr<Timer>> localTimer; public: typedef CpuLocalTimerParams Params; @@ -172,6 +171,9 @@ class CpuLocalTimer : public BasicPioDevice */ CpuLocalTimer(Params *p); + /** Inits the local timers */ + void init() override; + /** * Handle a read to the device * @param pkt The memory request. |