Re: [gem5-dev] Review Request: O3: Create a pipeline activity viewer for the O3 CPU model.

2011-05-27 Thread Gabe Black
That does look nice. It can be a lot of work slogging through O3 trace
output to figure out what's going on, and I expect this to make that a
lot easier. I glanced through the code and didn't see anything
particularly objectionable, although I wouldn't necessarily consider
that a thorough review :-P.

Gabe

On 05/26/11 22:20, Steve Reinhardt wrote:
 Cool!  I haven't looked at the code yet, but the output looks nice.

 Steve

 On Thu, May 26, 2011 at 8:19 PM, Ali Saidi sa...@umich.edu wrote:
 Anyone that is curious what this looks like... lets try the picture again...




 Ali

 On May 26, 2011, at 9:19 PM, Ali Saidi wrote:

 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/721/
 ---

 Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
 Nathan Binkert.


 Summary
 ---

 O3: Create a pipeline activity viewer for the O3 CPU model.

 Implement a pipeline activity viewer as a python script 
 (util/o3-pipeview.py)
 and modified O3 code base to support an extra trace flag (O3PipeView) for
 generating traces to be used as inputs by the tool.


 Diffs
 -

 src/cpu/SConscript 3f37cc5d25bc
 src/cpu/o3/commit_impl.hh 3f37cc5d25bc
 src/cpu/o3/decode_impl.hh 3f37cc5d25bc
 src/cpu/o3/dyn_inst.hh 3f37cc5d25bc
 src/cpu/o3/fetch_impl.hh 3f37cc5d25bc
 src/cpu/o3/iew_impl.hh 3f37cc5d25bc
 src/cpu/o3/inst_queue_impl.hh 3f37cc5d25bc
 src/cpu/o3/rename_impl.hh 3f37cc5d25bc
 util/o3-pipeview.py PRE-CREATION

 Diff: http://reviews.m5sim.org/r/721/diff


 Testing
 ---


 Thanks,

 Ali

 ___
 gem5-dev mailing list
 gem5-dev@m5sim.org
 http://m5sim.org/mailman/listinfo/gem5-dev


 ___
 gem5-dev mailing list
 gem5-dev@m5sim.org
 http://m5sim.org/mailman/listinfo/gem5-dev


 ___
 gem5-dev mailing list
 gem5-dev@m5sim.org
 http://m5sim.org/mailman/listinfo/gem5-dev

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Config: Add support for a Self.all proxy object

2011-05-27 Thread Gabe Black

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/720/#review1262
---


What does Self.all do? What is it for? You have one use in the change so I have 
a basic idea, but it would be helpful to know the specifics.

- Gabe


On 2011-05-26 19:17:18, Ali Saidi wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/720/
 ---
 
 (Updated 2011-05-26 19:17:18)
 
 
 Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
 Nathan Binkert.
 
 
 Summary
 ---
 
 Config: Add support for a Self.all proxy object
 
 
 Diffs
 -
 
   src/python/m5/SimObject.py 3f37cc5d25bc 
   src/python/m5/params.py 3f37cc5d25bc 
   src/python/m5/proxy.py 3f37cc5d25bc 
   src/sim/System.py 3f37cc5d25bc 
 
 Diff: http://reviews.m5sim.org/r/720/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Ali
 


___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


[gem5-dev] Cron m5test@zizzer /z/m5/regression/do-regression quick

2011-05-27 Thread Cron Daemon
scons: `build/ALPHA_SE/m5.debug' is up to date.
scons: `build/ALPHA_SE_MOESI_hammer/m5.debug' is up to date.
scons: `build/ALPHA_SE_MESI_CMP_directory/m5.debug' is up to date.
scons: `build/ALPHA_SE_MOESI_CMP_directory/m5.debug' is up to date.
scons: `build/ALPHA_SE_MOESI_CMP_token/m5.debug' is up to date.
scons: `build/ALPHA_FS/m5.debug' is up to date.
scons: `build/MIPS_SE/m5.debug' is up to date.
scons: `build/POWER_SE/m5.debug' is up to date.
scons: `build/SPARC_SE/m5.debug' is up to date.
scons: `build/SPARC_FS/m5.debug' is up to date.
scons: `build/X86_SE/m5.debug' is up to date.
scons: `build/X86_FS/m5.debug' is up to date.
scons: `build/ARM_SE/m5.debug' is up to date.
scons: `build/ARM_FS/m5.debug' is up to date.
scons: `build/ALPHA_SE/m5.fast' is up to date.
scons: `build/ALPHA_SE_MOESI_hammer/m5.fast' is up to date.
scons: `build/ALPHA_SE_MESI_CMP_directory/m5.fast' is up to date.
scons: `build/ALPHA_SE_MOESI_CMP_directory/m5.fast' is up to date.
scons: `build/ALPHA_SE_MOESI_CMP_token/m5.fast' is up to date.
scons: `build/ALPHA_FS/m5.fast' is up to date.
scons: `build/MIPS_SE/m5.fast' is up to date.
scons: `build/POWER_SE/m5.fast' is up to date.
scons: `build/SPARC_SE/m5.fast' is up to date.
scons: `build/SPARC_FS/m5.fast' is up to date.
scons: `build/X86_SE/m5.fast' is up to date.
scons: `build/X86_FS/m5.fast' is up to date.
scons: `build/ARM_SE/m5.fast' is up to date.
scons: `build/ARM_FS/m5.fast' is up to date.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/o3-timing passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/inorder-timing passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/simple-atomic passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/simple-timing passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-atomic passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/o3-timing passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby 
passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/opt/quick/01.hello-2T-smt/alpha/linux/o3-timing 
passed.
* build/ALPHA_SE/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby 
passed.
* build/ALPHA_SE/tests/opt/quick/20.eio-short/alpha/eio/simple-atomic 
passed.
* build/ALPHA_SE/tests/opt/quick/20.eio-short/alpha/eio/simple-timing 
passed.
* build/ALPHA_SE/tests/opt/quick/30.eio-mp/alpha/eio/simple-timing-mp 
passed.
* build/ALPHA_SE/tests/opt/quick/30.eio-mp/alpha/eio/simple-atomic-mp 
passed.
* build/ALPHA_SE/tests/opt/quick/50.memtest/alpha/linux/memtest passed.
* build/ALPHA_SE/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby passed.
* build/ALPHA_SE/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby 
passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/opt/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/opt/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/opt/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/opt/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic 
passed.
* 
build/ALPHA_FS/tests/opt/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual
 passed.
* 

Re: [gem5-dev] registerThreadContext

2011-05-27 Thread Korey Sewell
For #1 and #4, these  are pretty much the same right? The contextID is
really all possible sharers rather then just threadContext. Seems like you
should keep the meaning of contextID as it pertains to thread and then
generate a sharerID that would be a superset of the contextIDs. Objects
that dont have an explicit thread but are sharing can just offset off the
highest contextID. would that make sense?

For #2,  I'd prefer not to further complicate that ThreadContext interface.

For #3, I started on that patch but thought I would have to work after Lisa
committed her changes and I envisioned having a system where you could
either manually state the sharers or the system would figure it out for you.

Figuring this out automatically all the time is an acceptable solution ...
:)

I thought the easiest way would be to use the port connections to traverse
the system since something is already done for the snoop Port
registration.The only trick would be for CPUs with multiple threads you need
to ask out how many contexts it's going to share.





On Wed, May 25, 2011 at 1:57 PM, nathan binkert n...@binkert.org wrote:

 Hi Everyone,

 I'm trying to work with Lisa's patch to convert cache vector
 statistics to record data on a per-context basis where context is
 anything that executes instructions.  (Some things were per-CPU and
 some things were per-thread and neither make sense).  She added a
 parameter to each cache called num_sharing_contexts that would tell
 the cache how many contexts could send that cache a request.  Indexing
 into the vector was done by taking req-contextId and doing a modulo
 with num_sharing_contexts.  DMA controllers would all get stuck in a
 special additional bin.

 There are two things I don't like about this scheme.  First,
 configuring the parameter is a pain in the butt. Second, it's hard to
 compare statistics from two different caches because their indexes are
 different.  Third, you can't separate out DMA controllers.

 So, what I did was get rid fo num_sharing_contexts and use the number
 of contexts that were registered with the system with
 registerThreadContext (adding one for the DMA controllers).  This
 works for the common case, but doesn't work with the MemTester because
 the memtester doesn't have a thread context to register.

 I see a few options for solving this problem:
 1) Separate out the contextId allocation from registerThreadContext so
 things like DMA controllers and memtesters can get allocated a
 contextID.
 2) Create a base class for ThreadContext that is far simpler than the
 current thread context and use that when registering.
 3) Figure out contextID not by registration, but instead by doing a
 traversal of the memory system.  This would require that we have some
 sort of indication differentiating memory objects that can generate
 requests and thus require a contextID and memory objects that can't
 (caches, dram, pio devices, etc.).  We add a constructor parameter to
 the MemObject base class.
 4) Add a separate registration function for non Thread Contexts.

 Thoughts?  Ideas?

  Nate
 ___
 gem5-dev mailing list
 gem5-dev@m5sim.org
 http://m5sim.org/mailman/listinfo/gem5-dev




-- 
- Korey
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] registerThreadContext

2011-05-27 Thread nathan binkert
 For #1 and #4, these  are pretty much the same right? The contextID is
 really all possible sharers rather then just threadContext. Seems like you
 should keep the meaning of contextID as it pertains to thread and then
 generate a sharerID that would be a superset of the contextIDs. Objects
 that dont have an explicit thread but are sharing can just offset off the
 highest contextID. would that make sense?
Yeah, I guess #1 and #4 were more or less the same as written.  What
I'd really like to know is if we should have just one ID or two.  I'd
personally rather stick with one.  Maybe we just call it
memoryAccessID or sharerID and the contexts would just use that.  I'd
really rather avoid adding IDs for the sake of adding IDs, but if it
really makes sense, then we should do it.

 For #2,  I'd prefer not to further complicate that ThreadContext interface.
I'm not sure that it would complicate things much.  The idea is to
just put the things that are for memory requests into a base class and
have thread context derive from that.  So, not adding stuff, just
splitting the class into two parts.

 I thought the easiest way would be to use the port connections to traverse
 the system since something is already done for the snoop Port
 registration.The only trick would be for CPUs with multiple threads you need
 to ask out how many contexts it's going to share.
Yeah, it is doable.  It would probably be nice to have a routine that
is just designed to traverse the memory hierarchy and call a member
function on every object in the hierarchy.  I think registering with
the system gets the same effect and is potentially simpler.

  Nate
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] registerThreadContext

2011-05-27 Thread Korey Sewell
 I'd really like to know is if we should have just one ID or two.  I'd
 personally rather stick with one.  Maybe we just call it
 memoryAccessID or sharerID

memoryAccessID sounds like the right term here.



 I'm not sure that it would complicate things much.  The idea is to
 just put the things that are for memory requests into a base class and
 have thread context derive from that.  So, not adding stuff, just
 splitting the class into two parts.

I see, that's not too bad then.



  I thought the easiest way would be to use the port connections to
 traverse
  the system since something is already done for the snoop Port
  registration.The only trick would be for CPUs with multiple threads you
 need
  to ask out how many contexts it's going to share.
 Yeah, it is doable.  It would probably be nice to have a routine that
 is just designed to traverse the memory hierarchy and call a member
 function on every object in the hierarchy.  I think registering with
 the system gets the same effect and is potentially simpler.

That routine would be useful I agree. What I ran into when I started this is
you can't necessarily just sum up values though because things share the
same bus. Thus, if you ask an icache and a dcache for num sharers then you
get back 1 both time, but you can't sum those. So the traversal algorithm
has to be smart enough to count unique sharers (stl set?) on a bus and then
pass that value down the hierarchy for it to work right.

-- 
- Korey
___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Ruby: Correctly set access permissions for directory entries

2011-05-27 Thread Nilay Vaish

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/684/
---

(Updated 2011-05-27 11:41:44.345753)


Review request for Default.


Summary (updated)
---

Ruby: Correctly set access permissions for directory entries
The access permissions for the directory entries are not being set correctly.
This is because pointers are not used for handling directory entries.
function. The setState() function will once again set the permissions as well.
But it would make use of the State_to_permission() function, instead of doing
the analysis it used to do earlier. The changePermission() function provided
by the AbstractEntry and AbstractCacheEntry classes has been exposed to SLICC
code once again. The set_permission() functionality has been removed.

The patch has been updated to set permissions for all the five protocols.
All the protocols compile and clears 1 loads.


Diffs (updated)
-

  src/mem/protocol/MESI_CMP_directory-L1cache.sm dda2a88eb7c4 
  src/mem/protocol/MESI_CMP_directory-L2cache.sm dda2a88eb7c4 
  src/mem/protocol/MESI_CMP_directory-dir.sm dda2a88eb7c4 
  src/mem/protocol/MI_example-cache.sm dda2a88eb7c4 
  src/mem/protocol/MI_example-dir.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_directory-L1cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_directory-L2cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_directory-dir.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_token-L1cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_token-L2cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_CMP_token-dir.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_hammer-cache.sm dda2a88eb7c4 
  src/mem/protocol/MOESI_hammer-dir.sm dda2a88eb7c4 
  src/mem/protocol/RubySlicc_Types.sm dda2a88eb7c4 
  src/mem/slicc/ast/MethodCallExprAST.py dda2a88eb7c4 
  src/mem/slicc/symbols/StateMachine.py dda2a88eb7c4 

Diff: http://reviews.m5sim.org/r/684/diff


Testing
---


Thanks,

Nilay

___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Enabled instruction fetch pipelining.

2011-05-27 Thread Ali Saidi

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/718/#review1263
---


I think this type of change is necessary for reasonable performance, but the 
implementation here does pose some issues for any ISA that uses micro-coded 
instructions (and faults on one). Additionally, if you look at small issue 
width CPUs this doesn't generally solve the problem. We've re-worked this 
change to fix the correctness issue and as soon as it goes through a battery of 
internal tests we can post it for review if that works for everyone.

- Ali


On 2011-05-24 12:01:29, Lisa Hsu wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/718/
 ---
 
 (Updated 2011-05-24 12:01:29)
 
 
 Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
 Nathan Binkert.
 
 
 Summary
 ---
 
 Enabled instruction fetch pipelining.
 
 This patch is from one of our co-ops who has since finished her term, Yasuko 
 Watanabe. I don't personally know much about it. In the end, I'll push in her 
 name.  Thanks.
 
 
 Diffs
 -
 
   src/cpu/o3/fetch.hh 54a65799e4c1 
   src/cpu/o3/fetch_impl.hh 54a65799e4c1 
 
 Diff: http://reviews.m5sim.org/r/718/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Lisa
 


___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Config: Add support for a Self.all proxy object

2011-05-27 Thread Nathan Binkert

---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/720/#review1265
---



src/python/m5/SimObject.py
http://reviews.m5sim.org/r/720/#comment1742

Does this do what you want?  It doesn't seem like it would recurse down the 
tree and find all nodes that match (or does it?)



src/python/m5/params.py
http://reviews.m5sim.org/r/720/#comment1743

what exactly is this doing?  Also, what happens if val is of length 2 and 
the first element is a list or tuple?  Seems like an error condition or you're 
doing something wrong.



src/python/m5/proxy.py
http://reviews.m5sim.org/r/720/#comment1744

Seems like Mr Doxygen should be documenting this file a bit better :)

Also, what does Parent.all do?  It'd be nice if you described Self.all and 
Parent.all in this file.


- Nathan


On 2011-05-26 19:17:18, Ali Saidi wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/720/
 ---
 
 (Updated 2011-05-26 19:17:18)
 
 
 Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
 Nathan Binkert.
 
 
 Summary
 ---
 
 Config: Add support for a Self.all proxy object
 
 
 Diffs
 -
 
   src/python/m5/SimObject.py 3f37cc5d25bc 
   src/python/m5/params.py 3f37cc5d25bc 
   src/python/m5/proxy.py 3f37cc5d25bc 
   src/sim/System.py 3f37cc5d25bc 
 
 Diff: http://reviews.m5sim.org/r/720/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Ali
 


___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev


Re: [gem5-dev] Review Request: Config: Add support for a Self.all proxy object

2011-05-27 Thread Steve Reinhardt


 On 2011-05-26 23:29:05, Gabe Black wrote:
  What does Self.all do? What is it for? You have one use in the change so I 
  have a basic idea, but it would be helpful to know the specifics.
 
 Ali Saidi wrote:
 It's similar to Parent.any in that it traverses the object hierarchy and 
 finds all  (as opposed to one) objects that are of a certain type.  As you 
 see from the memories example, the system object can have a pointer to all 
 PhysicalMemory objects that belong to that system. The reason to add 
 something like this, is to have a generic way to prevent speculation from 
 touching I/O. It's possible for a speculative instruction fetch to sneak out 
 of the CPU if the wrong 10 things all happen an once and with this another 
 change can prevent that (will post soon). It's not as simple as just not 
 fetching from non-cacheable memory, since most architectures start their 
 processors in some kind of caches disabled, tlb should only issue 
 non-cachable transaction state.

So if the real machine is using speculative execution in this cache-disable 
mode, how does it avoid touching I/O locations?


- Steve


---
This is an automatically generated e-mail. To reply, visit:
http://reviews.m5sim.org/r/720/#review1262
---


On 2011-05-26 19:17:18, Ali Saidi wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/720/
 ---
 
 (Updated 2011-05-26 19:17:18)
 
 
 Review request for Default, Ali Saidi, Gabe Black, Steve Reinhardt, and 
 Nathan Binkert.
 
 
 Summary
 ---
 
 Config: Add support for a Self.all proxy object
 
 
 Diffs
 -
 
   src/python/m5/SimObject.py 3f37cc5d25bc 
   src/python/m5/params.py 3f37cc5d25bc 
   src/python/m5/proxy.py 3f37cc5d25bc 
   src/sim/System.py 3f37cc5d25bc 
 
 Diff: http://reviews.m5sim.org/r/720/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Ali
 


___
gem5-dev mailing list
gem5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/gem5-dev