02881a7bf3
The DTRACE() macro tests both Trace::enabled and the specific flag. This change uses the same administrative interface for enabling/disabling tracing, but masks the SimpleFlags settings directly. This eliminates a load for every DTRACE() test, e.g. DPRINTF. |
||
---|---|---|
.. | ||
main.cc | ||
Makefile | ||
README | ||
sc_gem5_control.cc | ||
sc_gem5_control.hh | ||
sc_logger.cc | ||
sc_logger.hh | ||
sc_module.cc | ||
sc_module.hh | ||
stats.cc | ||
stats.hh |
This directory contains a demo of C++ configuration of gem5. The intention is to provide a mechanism to allow pre-generated config.ini files generated by Python-based gem5 to be reloaded in library-base versions of gem5 embedded in other systems using C++ calls for simulation control. This directory contain a demo of hosting a C++ configured version of gem5 onto SystemC's event loop. The hosting is achieved by replacing 'simulate' with a SystemC object which implements an event loop using SystemC scheduler mechanisms. The sc_... files here should probably be hosted in a diferent directory and buildable as a library. Files: main.cc -- demonstration top level sc_logger.{cc,hh} -- rehosting of DPRINTF onto SC_REPORT sc_module.{cc,hh} -- SystemC simulation loop base class sc_gem5_control.{cc,hh} -- Alternative extra wrapping to allow gem5 Systems to be instantiated as single sc_module objects. stats.{cc,hh} -- Stats dumping (copied from util/cxx_config) Read main.cc for more details of the implementation and sc_... files for To build: First build gem5 as a library with cxx-config support and (optionally) without python. Also build a normal gem5 (cxx-config not needed, Python needed): > cd ../.. > scons build/ARM/gem5.opt > scons --with-cxx-config --without-python build/ARM/libgem5_opt.so > cd util/cxx_config Then edit Makefile to set the paths for SystemC and run make > make Make a config file for the C++-configured gem5 using normal gem5 > ../../build/ARM/gem5.opt ../../configs/example/se.py -c \ > ../../tests/test-progs/hello/bin/arm/linux/hello The binary 'gem5.opt.cxx' can now be used to load in the generated config file from the previous normal gem5 run. Try: > ./gem5.opt.cxx m5out/config.ini This should print: > Hello world! The .ini file can also be read by the Python .ini file reader example: > ../../build/ARM/gem5.opt ../../configs/example/read_ini.py m5out/config.ini