diff --git a/src/sim/SConscript b/src/sim/SConscript index 78d9bf535f..fe18d247ce 100644 --- a/src/sim/SConscript +++ b/src/sim/SConscript @@ -44,6 +44,7 @@ SimObject('PowerDomain.py') Source('async.cc') Source('backtrace_%s.cc' % env['BACKTRACE_IMPL']) Source('core.cc') +Source('cur_tick.cc') Source('tags.cc') Source('cxx_config.cc') Source('cxx_manager.cc') diff --git a/src/sim/core.cc b/src/sim/core.cc index 928e6c8d25..baa56abe2c 100644 --- a/src/sim/core.cc +++ b/src/sim/core.cc @@ -37,14 +37,6 @@ #include "base/cprintf.hh" #include "base/logging.hh" #include "base/output.hh" -#include "sim/eventq.hh" - -namespace Gem5Internal -{ - -__thread Tick *_curTickPtr; - -} // namespace Gem5Internal namespace SimClock { /// The simulated frequency of curTick(). (In ticks per second) diff --git a/src/sim/core.hh b/src/sim/core.hh index c5920490d7..30c8949cca 100644 --- a/src/sim/core.hh +++ b/src/sim/core.hh @@ -39,17 +39,9 @@ #include #include "base/types.hh" - -namespace Gem5Internal -{ - -// This pointer is maintained by curEventQueue in src/sim/eventq.hh. -extern __thread Tick *_curTickPtr; - -} // namespace Gem5Internal - -/// The universal simulation clock. -inline Tick curTick() { return *Gem5Internal::_curTickPtr; } +// @todo The next include is not needed in this file, but must be kept +// until the transitive includes are fixed +#include "sim/cur_tick.hh" /// These are variables that are set based on the simulator frequency ///@{ diff --git a/src/sim/cur_tick.cc b/src/sim/cur_tick.cc new file mode 100644 index 0000000000..630a7fb005 --- /dev/null +++ b/src/sim/cur_tick.cc @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2021 Daniel R. Carvalho + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "sim/cur_tick.hh" + +namespace Gem5Internal +{ + +__thread Tick *_curTickPtr; + +} // namespace Gem5Internal diff --git a/src/sim/cur_tick.hh b/src/sim/cur_tick.hh new file mode 100644 index 0000000000..0aee611156 --- /dev/null +++ b/src/sim/cur_tick.hh @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2021 Daniel R. Carvalho + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer; + * redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution; + * neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef __SIM_CUR_TICK_HH__ +#define __SIM_CUR_TICK_HH__ + +#include "base/types.hh" + +namespace Gem5Internal +{ + +// This pointer is maintained by curEventQueue in src/sim/eventq.hh. +extern __thread Tick *_curTickPtr; + +} // namespace Gem5Internal + +/// The universal simulation clock. +inline Tick curTick() { return *Gem5Internal::_curTickPtr; } + +#endif /* __SIM_CUR_TICK_HH__ */