From a5df4b5c324704720d775fc34656aa07e7726148 Mon Sep 17 00:00:00 2001 From: Nathan Binkert Date: Mon, 17 Jan 2005 00:52:51 -0500 Subject: [PATCH] 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 --- sim/main.cc | 40 ++++++++++++++++++++++++++++++++++++---- test/genini.py | 1 + 2 files changed, 37 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: // '--
:=' @@ -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. diff --git a/test/genini.py b/test/genini.py index 1b740d554..bad173365 100644 --- a/test/genini.py +++ b/test/genini.py @@ -1,3 +1,4 @@ +#!/usr/bin/env python # Copyright (c) 2005 The Regents of The University of Michigan # All rights reserved. # -- 2.30.2