06a4686af9
output files and the output directory are are handled. Make the output directory configuration via a command line parameter, or an environment variable. SConscript: Add new output file stuff base/misc.cc: dev/simconsole.cc: use new output file code cpu/base_cpu.cc: use new output file code to generate output streams dev/etherdump.cc: use the output file code to find the output directory use a real stream instead of a pointer dev/etherdump.hh: use a real stream instead of a pointer objects/Root.mpy: output_dir and config_output_file are not longer configured here. sim/main.cc: - Completely rework the command line argument passing to deal with changes in python and output files. - Update help output to reflect changes. - Remove all direct support for .ini files. They are strictly for intermediate representation. - Remove the --foo:bar=blah syntax for .ini files and add --foo.bar=blah syntax for python. This will generate: foo.bar = 'blah' in the python script. - Add '-d' to set the output directory. - Use new output file code to access the output stream. sim/serialize.cc: use the new code to find the output directory sim/universe.cc: Get rid of makeOutputStream. Use the new output file code. Remove output_dir and config_output_file as parameters. --HG-- extra : convert_revision : df2f0e13d401c3a60cae1239aa1ec3511721544d
108 lines
3.2 KiB
C++
108 lines
3.2 KiB
C++
/*
|
|
* Copyright (c) 2002-2004 The Regents of The University of Michigan
|
|
* 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 <cstring>
|
|
#include <fstream>
|
|
#include <list>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "base/misc.hh"
|
|
#include "base/output.hh"
|
|
#include "sim/builder.hh"
|
|
#include "sim/host.hh"
|
|
#include "sim/sim_object.hh"
|
|
#include "sim/universe.hh"
|
|
|
|
using namespace std;
|
|
|
|
Tick curTick = 0;
|
|
Tick ticksPerSecond;
|
|
double __ticksPerMS;
|
|
double __ticksPerUS;
|
|
double __ticksPerNS;
|
|
double __ticksPerPS;
|
|
|
|
bool fullSystem;
|
|
ostream *outputStream;
|
|
ostream *configStream;
|
|
|
|
// Dummy Object
|
|
class Root : public SimObject
|
|
{
|
|
public:
|
|
Root(const std::string &name) : SimObject(name) {}
|
|
};
|
|
|
|
BEGIN_DECLARE_SIM_OBJECT_PARAMS(Root)
|
|
|
|
Param<bool> full_system;
|
|
Param<Tick> frequency;
|
|
Param<string> output_file;
|
|
|
|
END_DECLARE_SIM_OBJECT_PARAMS(Root)
|
|
|
|
BEGIN_INIT_SIM_OBJECT_PARAMS(Root)
|
|
|
|
INIT_PARAM(full_system, "full system simulation"),
|
|
INIT_PARAM(frequency, "tick frequency"),
|
|
INIT_PARAM(output_file, "file to dump simulator output to")
|
|
|
|
END_INIT_SIM_OBJECT_PARAMS(Root)
|
|
|
|
CREATE_SIM_OBJECT(Root)
|
|
{
|
|
static bool created = false;
|
|
if (created)
|
|
panic("only one root object allowed!");
|
|
|
|
created = true;
|
|
fullSystem = full_system;
|
|
|
|
#ifdef FULL_SYSTEM
|
|
if (!fullSystem)
|
|
panic("FULL_SYSTEM compiled and configuration not full_system");
|
|
#else
|
|
if (fullSystem)
|
|
panic("FULL_SYSTEM not compiled but configuration is full_system");
|
|
#endif
|
|
|
|
ticksPerSecond = frequency;
|
|
double freq = double(ticksPerSecond);
|
|
__ticksPerMS = freq / 1.0e3;
|
|
__ticksPerUS = freq / 1.0e6;
|
|
__ticksPerNS = freq / 1.0e9;
|
|
__ticksPerPS = freq / 1.0e12;
|
|
|
|
outputStream = simout.find(output_file);
|
|
|
|
return new Root(getInstanceName());
|
|
}
|
|
|
|
REGISTER_SIM_OBJECT("Root", Root)
|
|
|