27c27
< import sys, os
---
> import sys, os, time
28a29,74
> import __main__
>
> briefCopyright = '''
> Copyright (c) 2001-2006
> The Regents of The University of Michigan
> All Rights Reserved
> '''
>
> fullCopyright = '''
> Copyright (c) 2001-2006
> The Regents of The University of Michigan
> All Rights Reserved
>
> Permission is granted to use, copy, create derivative works and
> redistribute this software and such derivative works for any purpose,
> so long as the copyright notice above, this grant of permission, and
> the disclaimer below appear in all copies made; and so long as the
> name of The University of Michigan is not used in any advertising or
> publicity pertaining to the use or distribution of this software
> without specific, written prior authorization.
>
> THIS SOFTWARE IS PROVIDED AS IS, WITHOUT REPRESENTATION FROM THE
> UNIVERSITY OF MICHIGAN AS TO ITS FITNESS FOR ANY PURPOSE, AND WITHOUT
> WARRANTY BY THE UNIVERSITY OF MICHIGAN OF ANY KIND, EITHER EXPRESS OR
> IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF
> MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE REGENTS OF
> THE UNIVERSITY OF MICHIGAN SHALL NOT BE LIABLE FOR ANY DAMAGES,
> INCLUDING DIRECT, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
> DAMAGES, WITH RESPECT TO ANY CLAIM ARISING OUT OF OR IN CONNECTION
> WITH THE USE OF THE SOFTWARE, EVEN IF IT HAS BEEN OR IS HEREAFTER
> ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
> '''
>
> def sayHello(f):
> print >> f, "M5 Simulator System"
> print >> f, briefCopyright
> print >> f, "M5 compiled on", __main__.compileDate
> hostname = os.environ.get('HOSTNAME')
> if not hostname:
> hostname = os.environ.get('HOST')
> if hostname:
> print >> f, "M5 executing on", hostname
> print >> f, "M5 simulation started", time.ctime()
>
> sayHello(sys.stderr)
>
74a121,180
>
> args_left = sys.argv[1:]
> configfile_found = False
>
> while args_left:
> arg = args_left.pop(0)
> if arg.startswith('--'):
> # if arg starts with '--', parse as a special python option
> # of the format --<python var>=<string value>
> try:
> (var, val) = arg.split('=', 1)
> except ValueError:
> panic("Could not parse configuration argument '%s'\n"
> "Expecting --<variable>=<value>\n" % arg);
> eval("%s = %s" % (var, repr(val)))
> elif arg.startswith('-'):
> # if the arg starts with '-', it should be a simulator option
> # with a format similar to getopt.
> optchar = arg[1]
> if len(arg) > 2:
> args_left.insert(0, arg[2:])
> if optchar == 'd':
> outdir = args_left.pop(0)
> elif optchar == 'h':
> showBriefHelp(sys.stderr)
> sys.exit(1)
> elif optchar == 'E':
> env_str = args_left.pop(0)
> split_result = env_str.split('=', 1)
> var = split_result[0]
> if len(split_result == 2):
> val = split_result[1]
> else:
> val = True
> env[var] = val
> elif optchar == 'I':
> AddToPath(args_left.pop(0))
> elif optchar == 'P':
> eval(args_left.pop(0))
> else:
> showBriefHelp(sys.stderr)
> panic("invalid argument '%s'\n" % arg_str)
> else:
> # In any other case, treat the option as a configuration file
> # name and load it.
> if not arg.endswith('.py'):
> panic("Config file '%s' must end in '.py'\n" % arg)
> configfile_found = True
> m5execfile(arg, globals())
>
>
> if not configfile_found:
> panic("no configuration file specified!")
>
> if globals().has_key('root') and isinstance(root, Root):
> sys.stdout = file('config.ini', 'w')
> instantiate(root)
> else:
> print 'Instantiation skipped: no root object found.'
>