9e8003148f78811e600e51a900f96b71cb525b60
Currently, the atomic CPU can be in the middle of a microcode sequence when it is drained. This leads to two problems: * When switching to a hardware virtualized CPU, we obviously can't execute gem5 microcode. * Since curMacroStaticInst is populated when executing microcode, repeated switching between CPUs executing microcode leads to incorrect execution. After applying this patch, the CPU will be on a proper instruction boundary, which means that it is safe to switch to any CPU model (including hardware virtualized ones). This changeset fixes a bug where the multiple switches to the same atomic CPU sometimes corrupts the target state because of dangling pointers to the currently executing microinstruction. Note: This changeset moves tick event descheduling from switchOut() to drain(), which makes timing consistent between just draining a system and draining /and/ switching between two atomic CPUs. This makes debugging quite a lot easier (execution traces get the same timing), but the latency of the last instruction before a drain will not be accounted for correctly (it will always be 1 cycle). Note 2: This changeset removes so_state variable, the locked variable, and the tickEvent from checkpoints since none of them contain state that needs to be preserved across checkpoints. The so_state is made redundant because we don't use the drain state variable anymore, the lock variable should never be set when the system is drained, and the tick event isn't scheduled.
This is the gem5 simulator.
For detailed information about building the simulator and getting
started please refer to:
* The main website: http://www.gem5.org
* Documentation wiki: http://www.gem5.org/Documentation
* Doxygen generated: http://www.gem5.org/docs
* Tutorials: http://www.gem5.org/Tutorials
Specific pages of interest are:
http://www.gem5.org/Introduction
http://www.gem5.org/Build_System
http://www.gem5.org/Dependencies
http://www.gem5.org/Running_gem5
Short version:
External tools and required versions
To build gem5, you will need the following software:
g++ version 4.3 or newer.
Python, version 2.4 - 2.7 (we don't support Python 3.X). gem5 links in the
Python interpreter, so you need the Python header files and shared
library (e.g., /usr/lib/libpython2.4.so) in addition to the interpreter
executable. These may or may not be installed by default. For example,
on Debian/Ubuntu, you need the "python-dev" package in addition to the
"python" package. If you need a newer or different Python installation
but can't or don't want to upgrade the default Python on your system,
see http://www.gem5.org/Using_a_non-default_Python_installation
SCons, version 0.98.1 or newer. SCons is a powerful replacement for make.
If you don't have administrator privileges on your machine, you can use the
"scons-local" package to install scons in your m5 directory, or install SCons
in your home directory using the '--prefix=' option.
SWIG, version 1.3.34 or newer
zlib, any recent version. For Debian/Ubuntu, you will need the "zlib-dev" or
"zlib1g-dev" package to get the zlib.h header file as well as the library
itself.
m4, the macro processor.
4. In this directory, type 'scons build/<ARCH>/gem5.opt' where ARCH is one
of ALPHA, ARM, MIPS, POWER, SPARC, or X86. This will build an optimized version
of the gem5 binary (gem5.opt) for the the specified architecture.
If you have questions, please send mail to gem5-users@gem5.org
WHAT'S INCLUDED (AND NOT)
-------------------------
The basic source release includes these subdirectories:
- gem5:
- configs: example simulation configuration scripts
- ext: less-common external packages needed to build gem5
- src: source code of the gem5 simulator
- system: source for some optional system software for simulated systems
- tests: regression tests
- util: useful utility programs and files
To run full-system simulations, you will need compiled system firmware
(console and PALcode for Alpha), kernel binaries and one or more disk images.
Please see the gem5 download page for these items at http://www.gem5.org/Download
Description