sim: Fix clock_domain unserialization
authorSascha Bischoff <sascha.bischoff@ARM.com>
Fri, 1 Apr 2016 15:22:44 +0000 (16:22 +0100)
committerSascha Bischoff <sascha.bischoff@ARM.com>
Fri, 1 Apr 2016 15:22:44 +0000 (16:22 +0100)
commitebc9e1d426f7dbe13b63d87afbdf8507265f8040
tree5bab225aa545b1dda8255d560d825eb5c1ec9451
parentf948f9fca987b25ef0716e87fdc4e874fb607c14
sim: Fix clock_domain unserialization

This patch addresses an issue with the unserialization of clock
domains. Previously, the previous performance level was not restored
due to a bug in the code, which detected the post-unserialize update
as superfluous. This patch splits the setting of the clock domain into
two parts. The original interface of perfLevel is retained, but the
actual update takes place in signalPerfLevelUpdate, which is private
to the class. The perfLevel method checks that if the new performance
level is different to the previous performance level, and will only
call signalPerfLevelUpdate if there is a change. Therefore, the
performance level is only updated, and voltage domains notified, if
there is an actual change. The split functionality allows
signalPerfLevelUpdate to be called by startup() to explicitly force an
update post unserialization.
src/sim/clock_domain.cc
src/sim/clock_domain.hh