diff options
author | Nathan Binkert <binkertn@umich.edu> | 2005-01-17 00:52:51 -0500 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2005-01-17 00:52:51 -0500 |
commit | a5df4b5c324704720d775fc34656aa07e7726148 (patch) | |
tree | 96c542256584d47830892f6969e0e6e9b2648c2c /sim | |
parent | 3ece6ab029756fa40679677d124e14acd1349416 (diff) | |
download | gem5-a5df4b5c324704720d775fc34656aa07e7726148.tar.xz |
Add the pentium 4 configuration. Add some command line options
to M5 to support the python configuration stuff.
sim/main.cc:
Make the -I option update the include path for phython as
well as cpp
Make the -P option pass a raw python string to the interpreter
Make the -E option add strings to the environment
Break up the various steps of python processing to accomidate
multiple files and the various new options
test/genini.py:
Make this executable
--HG--
extra : convert_revision : 6acc50d2e4367c5ceaee013db987c8a1db924df3
Diffstat (limited to 'sim')
-rw-r--r-- | sim/main.cc | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/sim/main.cc b/sim/main.cc index a99ac26d6..8b9f0fa43 100644 --- a/sim/main.cc +++ b/sim/main.cc @@ -44,6 +44,7 @@ #include "base/misc.hh" #include "base/pollevent.hh" #include "base/statistics.hh" +#include "base/str.hh" #include "base/time.hh" #include "cpu/base_cpu.hh" #include "cpu/full_cpu/smt.hh" @@ -243,6 +244,8 @@ main(int argc, char **argv) // -u to override. bool quitOnUnreferenced = true; + bool python_initialized = false; + // Parse command-line options. // Since most of the complex options are handled through the // config database, we don't mess with getopts, and just parse @@ -283,7 +286,6 @@ main(int argc, char **argv) case 'D': case 'U': - case 'I': // cpp options: record & pass to cpp. Note that these // cannot have spaces, i.e., '-Dname=val' is OK, but // '-D name=val' is not. I don't consider this a @@ -293,6 +295,30 @@ main(int argc, char **argv) cppArgs.push_back(arg_str); break; + case 'I': { + // We push -I as an argument to cpp + cppArgs.push_back(arg_str); + + string arg = arg_str + 2; + eat_white(arg); + + // Send this as the python path + addPythonPath(arg); + } break; + + case 'P': + if (!python_initialized) { + initPythonConfig(); + python_initialized = true; + } + writePythonString(arg_str + 2); + writePythonString("\n"); + + case 'E': + if (putenv(arg_str + 2) == -1) + panic("putenv: %s\n", strerror(errno)); + break; + case '-': // command-line configuration parameter: // '--<section>:<parameter>=<value>' @@ -329,10 +355,11 @@ main(int argc, char **argv) exit(1); } } else if (ext == ".py" || ext == ".mpy") { - if (!loadPythonConfig(filename, &simConfigDB)) { - cprintf("Error processing file %s\n", filename); - exit(1); + if (!python_initialized) { + initPythonConfig(); + python_initialized = true; } + loadPythonConfig(filename); } else { cprintf("Config file name '%s' must end in '.py' or '.ini'.\n", @@ -342,6 +369,11 @@ main(int argc, char **argv) } } + if (python_initialized && finishPythonConfig(simConfigDB)) { + cprintf("Error processing python code\n"); + exit(1); + } + // The configuration database is now complete; start processing it. // Parse and check all non-config-hierarchy parameters. |