diff -r a2fc624bdcc9 -r 959f8494b65e configs/common/Options.py --- a/configs/common/Options.py Fri Dec 16 15:31:50 2011 -0600 +++ b/configs/common/Options.py Fri Dec 16 15:32:01 2011 -0600 @@ -63,7 +63,8 @@ help="exit at specified work end count") parser.add_option("--work-begin-exit-count", action="store", type="int", help="exit at specified work begin count") - +parser.add_option("--init-param", action="store", type="int", default=0, + help="Parameter available in simulation with m5 initparam") # Checkpointing options ###Note that performing checkpointing via python script files will override diff -r a2fc624bdcc9 -r 959f8494b65e configs/example/fs.py --- a/configs/example/fs.py Fri Dec 16 15:31:50 2011 -0600 +++ b/configs/example/fs.py Fri Dec 16 15:32:01 2011 -0600 @@ -151,6 +151,8 @@ if options.script is not None: test_sys.readfile = options.script +test_sys.init_param = options.init_param + test_sys.cpu = [TestCPUClass(cpu_id=i) for i in xrange(np)] CacheConfig.config_cache(options, test_sys) @@ -199,6 +201,7 @@ if options.kernel is not None: drive_sys.kernel = binary(options.kernel) + drive_sys.init_param = options.init_param root = makeDualRoot(test_sys, drive_sys, options.etherdump) elif len(bm) == 1: root = Root(system=test_sys) diff -r a2fc624bdcc9 -r 959f8494b65e src/arch/arm/isa/insts/m5ops.isa --- a/src/arch/arm/isa/insts/m5ops.isa Fri Dec 16 15:31:50 2011 -0600 +++ b/src/arch/arm/isa/insts/m5ops.isa Fri Dec 16 15:32:01 2011 -0600 @@ -191,7 +191,9 @@ initparamCode = ''' #if FULL_SYSTEM - Rt = PseudoInst::initParam(xc->tcBase()); + uint64_t ip_val = PseudoInst::initParam(xc->tcBase()); + R0 = bits(ip_val, 31, 0); + R1 = bits(ip_val, 63, 32); #else PseudoInst::panicFsOnlyPseudoInst("initparam"); Rt = 0; @@ -200,7 +202,8 @@ initparamIop = InstObjParams("initparam", "Initparam", "PredOp", { "code": initparamCode, - "predicate_test": predicateTest }) + "predicate_test": predicateTest }, + ["IsNonSpeculative"]) header_output += BasicDeclare.subst(initparamIop) decoder_output += BasicConstructor.subst(initparamIop) exec_output += PredOpExecute.subst(initparamIop) diff -r a2fc624bdcc9 -r 959f8494b65e util/m5/m5.c --- a/util/m5/m5.c Fri Dec 16 15:31:50 2011 -0600 +++ b/util/m5/m5.c Fri Dec 16 15:32:01 2011 -0600 @@ -160,8 +160,7 @@ if (argc != 0) usage(); - - printf("%ld", m5_initparam()); + printf("%"PRIu64, m5_initparam()); } void