[m5-dev] Cron m5t...@zizzer /z/m5/regression/do-regression quick

2010-11-15 Thread Cron Daemon
* build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-timing-mp 
FAILED!
* build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-atomic-mp 
FAILED!
* build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-timing 
FAILED!
* build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-atomic 
FAILED!
* build/ALPHA_SE/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby 
passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/inorder-timing 
passed.
* build/ALPHA_SE/tests/fast/quick/01.hello-2T-smt/alpha/linux/o3-timing 
passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby 
passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-atomic passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/o3-timing passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/o3-timing passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-timing passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby 
passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/linux/simple-timing passed.
* build/ALPHA_SE/tests/fast/quick/00.hello/alpha/tru64/simple-atomic passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MOESI_hammer/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_hammer
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MESI_CMP_directory/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_directory
 passed.
* 
build/ALPHA_SE_MOESI_CMP_directory/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_directory
 passed.
* build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby 
passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/60.rubytest/alpha/linux/rubytest-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/50.memtest/alpha/linux/memtest-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/00.hello/alpha/linux/simple-timing-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_SE_MOESI_CMP_token/tests/fast/quick/00.hello/alpha/tru64/simple-timing-ruby-MOESI_CMP_token
 passed.
* 
build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-timing-dual
 passed.
* 
build/ALPHA_FS/tests/fast/quick/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic
 passed.
* 
build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-timing 
passed.
* 
build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual
 passed.
* 
build/ALPHA_FS/tests/fast/quick/10.linux-boot/alpha/linux/tsunami-simple-atomic 
passed.
* build/ALPHA_SE/tests/fast/quick/50.memtest/alpha/linux/memtest passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-timing passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-timing-ruby 
passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/o3-timing passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/inorder-timing passed.
* build/MIPS_SE/tests/fast/quick/00.hello/mips/linux/simple-atomic passed.
* build/POWER_SE/tests/fast/quick/00.hello/power/linux/simple-atomic passed.
* build/POWER_SE/tests/fast/quick/00.hello/power/linux/o3-timing passed.
* build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-atomic passed.
* 
build/SPARC_SE/tests/fast/quick/40.m5threads-test-atomic/sparc/linux/simple-timing-mp
 passed.
* build/SPARC_SE/tests/fast/quick/00.hello/sparc/linux/simple-timing-ruby 
passed.
* 
build/SPARC_SE/tests/fast/quick/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp
 passed.
* build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/o3-timing passed.
* build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/simple-timing 
passed.
* build/SPARC_SE/tests/fast/quick/02.insttest/sparc/linux/simple-atomic 

Re: [m5-dev] Cron m5t...@zizzer /z/m5/regression/do-regression quick

2010-11-15 Thread Gabe Black
Not me I hope. File system issues again?

Cron Daemon wrote:
 * build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-timing-mp 
 FAILED!
 * build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-atomic-mp 
 FAILED!
 * build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-timing 
 FAILED!
 * build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-atomic 
 FAILED!
   
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] Review Request: X86: Take advantage of new PCState syntax.

2010-11-15 Thread Gabe Black

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

Review request for Default.


Summary
---

X86: Take advantage of new PCState syntax.


Diffs
-

  src/arch/x86/isa/decoder/two_byte_opcodes.isa f440cdaf1c2d 
  src/arch/x86/isa/microops/regop.isa f440cdaf1c2d 
  src/arch/x86/isa/microops/seqop.isa f440cdaf1c2d 
  src/arch/x86/isa/operands.isa f440cdaf1c2d 

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


Testing
---


Thanks,

Gabe

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


[m5-dev] Review Request: SPARC: Take advantage of new PCState syntax.

2010-11-15 Thread Gabe Black

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

Review request for Default.


Summary
---

SPARC: Take advantage of new PCState syntax.


Diffs
-

  src/arch/sparc/isa/decoder.isa f440cdaf1c2d 
  src/arch/sparc/isa/formats/branch.isa f440cdaf1c2d 
  src/arch/sparc/isa/operands.isa f440cdaf1c2d 

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


Testing
---


Thanks,

Gabe

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


[m5-dev] Review Request: POWER: Take advantage of new PCState syntax.

2010-11-15 Thread Gabe Black

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

Review request for Default.


Summary
---

POWER: Take advantage of new PCState syntax.


Diffs
-

  src/arch/power/isa/decoder.isa f440cdaf1c2d 
  src/arch/power/isa/formats/branch.isa f440cdaf1c2d 
  src/arch/power/isa/operands.isa f440cdaf1c2d 

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


Testing
---


Thanks,

Gabe

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


[m5-dev] Review Request: MIPS: Take advantage of new PCState syntax.

2010-11-15 Thread Gabe Black

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

Review request for Default.


Summary
---

MIPS: Take advantage of new PCState syntax.


Diffs
-

  src/arch/mips/isa/decoder.isa f440cdaf1c2d 
  src/arch/mips/isa/formats/branch.isa f440cdaf1c2d 
  src/arch/mips/isa/operands.isa f440cdaf1c2d 

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


Testing
---


Thanks,

Gabe

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


[m5-dev] Review Request: Alpha: Take advantage of new PCState syntax.

2010-11-15 Thread Gabe Black

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

Review request for Default.


Summary
---

Alpha: Take advantage of new PCState syntax.


Diffs
-

  src/arch/alpha/isa/branch.isa f440cdaf1c2d 
  src/arch/alpha/isa/decoder.isa f440cdaf1c2d 
  src/arch/alpha/isa/main.isa f440cdaf1c2d 

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


Testing
---


Thanks,

Gabe

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


[m5-dev] Review Request: ARM: Take advantage of new PCState syntax.

2010-11-15 Thread Gabe Black

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

Review request for Default.


Summary
---

ARM: Take advantage of new PCState syntax.


Diffs
-

  src/arch/arm/isa/insts/branch.isa f440cdaf1c2d 
  src/arch/arm/isa/insts/data.isa f440cdaf1c2d 
  src/arch/arm/isa/insts/ldr.isa f440cdaf1c2d 
  src/arch/arm/isa/insts/macromem.isa f440cdaf1c2d 
  src/arch/arm/isa/insts/misc.isa f440cdaf1c2d 
  src/arch/arm/isa/operands.isa f440cdaf1c2d 

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


Testing
---


Thanks,

Gabe

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


Re: [m5-dev] Review Request: ISA: Get the parser to support pc state components more elegantly.

2010-11-15 Thread Gabe Black
This change implements the ISA parser part of new syntax to read and
write components of the PCState more like the old syntax. Things center
around the PCState operand type, it's default ctype, and its register
index. When manipulating the PC state object as a whole, the ctype is
set to None and automatically becomes TheISA::PCState, and the index
is also set to None. When dealing with components, ctype describes the
type for the extracted component and the register index specifier is
used as the name of the accessor function.

The six subsequent patches update each of the ISAs to use the new
syntax. These could use more testing, as usual especially ARM, but I
wanted to get them out there before I started traveling.

Gabe

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


 Review request for Default.
 By Gabe Black.


   Description

 ISA: Get the parser to support pc state components more elegantly.


   Diffs

 * src/arch/isa_parser.py (f440cdaf1c2d)

 View Diff http://reviews.m5sim.org/r/306/diff/

 

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

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


Re: [m5-dev] Cron m5t...@zizzer /z/m5/regression/do-regression quick

2010-11-15 Thread Ali Saidi
Pretty sure it is... I'll try to move a copy to zizzer soon.

Ali

On Nov 15, 2010, at 2:15 AM, Gabe Black wrote:

 Not me I hope. File system issues again?
 
 Cron Daemon wrote:
 * build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-timing-mp 
 FAILED!
 * build/ALPHA_SE/tests/fast/quick/30.eio-mp/alpha/eio/simple-atomic-mp 
 FAILED!
 * build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-timing 
 FAILED!
 * build/ALPHA_SE/tests/fast/quick/20.eio-short/alpha/eio/simple-atomic 
 FAILED!
 
 ___
 m5-dev mailing list
 m5-dev@m5sim.org
 http://m5sim.org/mailman/listinfo/m5-dev
 

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


Re: [m5-dev] isa_parser debug mode

2010-11-15 Thread Steve Reinhardt
Sounds reasonable to me too.  Should we have a single flag that enables
tracebacks in both the parser and in the rest of python?  IIRC, we print the
python backtrace by default when we hit a python exception, and it seems to
me that most of the time the backtrace obscures a useful error message
rather than providing any help (though of course sometimes it's the other
way around).

Steve

On Sun, Nov 14, 2010 at 9:37 PM, nathan binkert n...@binkert.org wrote:

 Seems fine to me.  --debug already exists with scons, so that's
 perhaps not the best option.  I think we want to try to kee our
 options separate from SCons.

  Nate

 On Sun, Nov 14, 2010 at 7:41 PM, Gabe Black gbl...@eecs.umich.edu wrote:
  Hi everybody. If you don't actively work on ISA descriptions or the
  parser, feel free to ignore this email. I've been working on the parser
  to better integrate the recent PC changes, and it's been useful to turn
  on the backtrace feature of the parser by setting debug=True at the top.
  This is a lot better than having it buried in the script (thanks, Ali)
  but it's still fairly easy to forget to turn it back off when generating
  patches, etc. Would anyone object to plumbing a scons variable through
  scons and into the parser to affect that behavior? I'm not sure whether
  a command line variable or -- style option would be best for scons, but
  I'm leaning heavily towards something like --debug for the parser
  itself. This isn't high priority and I may never bother actually
  implementing it, but I wanted to see if anyone violently apposed for
  some reason, maybe the added complexity and leaking of parser control
  knobs into the wider world of scons.
 
  Gabe
  ___
  m5-dev mailing list
  m5-dev@m5sim.org
  http://m5sim.org/mailman/listinfo/m5-dev
 
 
 ___
 m5-dev mailing list
 m5-dev@m5sim.org
 http://m5sim.org/mailman/listinfo/m5-dev

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


Re: [m5-dev] Review Request: ISA: Get the parser to support pc state components more elegantly.

2010-11-15 Thread Steve Reinhardt
Nice!  I just skimmed the code quickly, but it looks good to me.

Steve

On Mon, Nov 15, 2010 at 4:35 AM, Gabe Black gbl...@eecs.umich.edu wrote:

 This change implements the ISA parser part of new syntax to read and
 write components of the PCState more like the old syntax. Things center
 around the PCState operand type, it's default ctype, and its register
 index. When manipulating the PC state object as a whole, the ctype is
 set to None and automatically becomes TheISA::PCState, and the index
 is also set to None. When dealing with components, ctype describes the
 type for the extracted component and the register index specifier is
 used as the name of the accessor function.

 The six subsequent patches update each of the ISAs to use the new
 syntax. These could use more testing, as usual especially ARM, but I
 wanted to get them out there before I started traveling.

 Gabe

 Gabe Black wrote:
  This is an automatically generated e-mail. To reply, visit:
  http://reviews.m5sim.org/r/306/
 
 
  Review request for Default.
  By Gabe Black.
 
 
Description
 
  ISA: Get the parser to support pc state components more elegantly.
 
 
Diffs
 
  * src/arch/isa_parser.py (f440cdaf1c2d)
 
  View Diff http://reviews.m5sim.org/r/306/diff/
 
  
 
  ___
  m5-dev mailing list
  m5-dev@m5sim.org
  http://m5sim.org/mailman/listinfo/m5-dev
 

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

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


Re: [m5-dev] Review Request: O3: Make O3 support variably lengthed instructions.

2010-11-15 Thread Ali Saidi

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

Ship it!


- Ali


On 2010-11-11 04:44:28, Gabe Black wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/281/
 ---
 
 (Updated 2010-11-11 04:44:28)
 
 
 Review request for Default.
 
 
 Summary
 ---
 
 O3: Make O3 support variably lengthed instructions.
 
 
 Diffs
 -
 
   src/arch/alpha/predecoder.hh 340b6f01d69b 
   src/arch/mips/predecoder.hh 340b6f01d69b 
   src/arch/power/predecoder.hh 340b6f01d69b 
   src/arch/sparc/predecoder.hh 340b6f01d69b 
   src/cpu/base.hh 340b6f01d69b 
   src/cpu/o3/fetch.hh 340b6f01d69b 
   src/cpu/o3/fetch_impl.hh 340b6f01d69b 
   src/cpu/simple/base.hh 340b6f01d69b 
 
 Diff: http://reviews.m5sim.org/r/281/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Gabe
 


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


[m5-dev] changeset in m5: ARM: Do something predictable for an UNPREDICTA...

2010-11-15 Thread Ali Saidi
changeset 9e11081542e4 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=9e11081542e4
description:
ARM: Do something predictable for an UNPREDICTABLE branch.

diffstat:

 src/arch/arm/types.hh |  4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diffs (14 lines):

diff -r f440cdaf1c2d -r 9e11081542e4 src/arch/arm/types.hh
--- a/src/arch/arm/types.hh Thu Nov 11 11:58:09 2010 -0800
+++ b/src/arch/arm/types.hh Mon Nov 15 14:04:03 2010 -0600
@@ -333,6 +333,10 @@
 nextThumb(false);
 } else {
 warn(Bad interworking branch address %#x.\n, newPC);
+// This state is UNPREDICTABLE in the ARM architecture
+// The easy thing to do is just mask off the bit and
+// stay in the current mode, so we'll do that.
+newPC = ~mask(2);
 }
 }
 npc(newPC);
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: ARM: Fix SRS instruction to micro-code memory o...

2010-11-15 Thread Ali Saidi
changeset 79adfecb2b8a in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=79adfecb2b8a
description:
ARM: Fix SRS instruction to micro-code memory operation and register 
update.

Previously the SRS instruction attempted to writeback in initiateAcc() 
which
worked until a recent change, but was incorrect.

diffstat:

 src/arch/arm/isa/insts/str.isa |  11 ---
 1 files changed, 8 insertions(+), 3 deletions(-)

diffs (32 lines):

diff -r 434b5dfb87d9 -r 79adfecb2b8a src/arch/arm/isa/insts/str.isa
--- a/src/arch/arm/isa/insts/str.isaMon Nov 15 14:04:03 2010 -0600
+++ b/src/arch/arm/isa/insts/str.isaMon Nov 15 14:04:03 2010 -0600
@@ -112,8 +112,6 @@
 Mem.ud = (uint64_t)cSwap(LR.uw, cpsr.e) |
  ((uint64_t)cSwap(Spsr.uw, cpsr.e)  32);
 '''
-if self.writeback:
-accCode += SpMode = SpMode + %s;\n % wbDiff
 
 global header_output, decoder_output, exec_output
 
@@ -122,11 +120,18 @@
   postacc_code:  }
 codeBlobs[predicate_test] = pickPredicate(codeBlobs)
 
+wbDecl = None
+if self.writeback:
+wbDecl = '''MicroAddiUop(machInst,
+  intRegInMode((OperatingMode)regMode, INTREG_SP),
+  intRegInMode((OperatingMode)regMode, INTREG_SP),
+  %d);''' % wbDiff
+
 (newHeader,
  newDecoder,
  newExec) = self.fillTemplates(self.name, self.Name, codeBlobs,
  [ArmISA::TLB::AlignWord, ArmISA::TLB::MustBeOne], [],
- base = 'SrsOp')
+ 'SrsOp', wbDecl)
 
 header_output += newHeader
 decoder_output += newDecoder
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: CPU: Fix bug when a split transaction is issued...

2010-11-15 Thread Ali Saidi
changeset 434b5dfb87d9 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=434b5dfb87d9
description:
CPU: Fix bug when a split transaction is issued to a faster cache

In the case of a split transaction and a cache that is faster than a 
CPU we
could get two responses before next_tick expires. Add an event that is
scheduled in this case and return false rather than asserting.

diffstat:

 src/cpu/simple/timing.cc |  11 ++-
 src/cpu/simple/timing.hh |   4 +++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diffs (48 lines):

diff -r 9e11081542e4 -r 434b5dfb87d9 src/cpu/simple/timing.cc
--- a/src/cpu/simple/timing.cc  Mon Nov 15 14:04:03 2010 -0600
+++ b/src/cpu/simple/timing.cc  Mon Nov 15 14:04:03 2010 -0600
@@ -999,7 +999,16 @@
 if (next_tick == curTick) {
 cpu-completeDataAccess(pkt);
 } else {
-tickEvent.schedule(pkt, next_tick);
+if (!tickEvent.scheduled()) {
+tickEvent.schedule(pkt, next_tick);
+} else {
+// In the case of a split transaction and a cache that is
+// faster than a CPU we could get two responses before
+// next_tick expires
+if (!retryEvent.scheduled())
+schedule(retryEvent, next_tick);
+return false;
+}
 }
 
 return true;
diff -r 9e11081542e4 -r 434b5dfb87d9 src/cpu/simple/timing.hh
--- a/src/cpu/simple/timing.hh  Mon Nov 15 14:04:03 2010 -0600
+++ b/src/cpu/simple/timing.hh  Mon Nov 15 14:04:03 2010 -0600
@@ -140,7 +140,7 @@
   public:
 
 CpuPort(const std::string _name, TimingSimpleCPU *_cpu, Tick _lat)
-: Port(_name, _cpu), cpu(_cpu), lat(_lat)
+: Port(_name, _cpu), cpu(_cpu), lat(_lat), retryEvent(this)
 { }
 
 bool snoopRangeSent;
@@ -161,12 +161,14 @@
 {
 PacketPtr pkt;
 TimingSimpleCPU *cpu;
+CpuPort *port;
 
 TickEvent(TimingSimpleCPU *_cpu) : cpu(_cpu) {}
 const char *description() const { return Timing CPU tick; }
 void schedule(PacketPtr _pkt, Tick t);
 };
 
+EventWrapperPort, Port::sendRetry retryEvent;
 };
 
 class IcachePort : public CpuPort
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: ARM: Use the correct delete operator for RFE

2010-11-15 Thread Ali Saidi
changeset 2b65eb281f5f in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=2b65eb281f5f
description:
ARM: Use the correct delete operator for RFE

diffstat:

 src/arch/arm/insts/mem.hh |  2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diffs (12 lines):

diff -r 79adfecb2b8a -r 2b65eb281f5f src/arch/arm/insts/mem.hh
--- a/src/arch/arm/insts/mem.hh Mon Nov 15 14:04:03 2010 -0600
+++ b/src/arch/arm/insts/mem.hh Mon Nov 15 14:04:03 2010 -0600
@@ -110,7 +110,7 @@
 virtual
 ~RfeOp()
 {
-delete uops;
+delete [] uops;
 }
 
 StaticInstPtr
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: ARM: Add support for switching CPUs

2010-11-15 Thread Ali Saidi
changeset 7bf78d12b359 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=7bf78d12b359
description:
ARM: Add support for switching CPUs

diffstat:

 src/arch/arm/table_walker.cc |  16 ++--
 src/arch/arm/table_walker.hh |   1 +
 src/arch/arm/utility.cc  |  17 +
 src/arch/arm/utility.hh  |   6 +-
 4 files changed, 33 insertions(+), 7 deletions(-)

diffs (94 lines):

diff -r 2b65eb281f5f -r 7bf78d12b359 src/arch/arm/table_walker.cc
--- a/src/arch/arm/table_walker.cc  Mon Nov 15 14:04:03 2010 -0600
+++ b/src/arch/arm/table_walker.cc  Mon Nov 15 14:04:03 2010 -0600
@@ -43,6 +43,7 @@
 #include dev/io_device.hh
 #include cpu/base.hh
 #include cpu/thread_context.hh
+#include sim/system.hh
 
 using namespace ArmISA;
 
@@ -59,9 +60,10 @@
 }
 
 
-unsigned int TableWalker::drain(Event *de)
+unsigned int
+TableWalker::drain(Event *de)
 {
-if (stateQueueL1.size() != 0 || stateQueueL2.size() != 0)
+if (stateQueueL1.size() || stateQueueL2.size() || pendingQueue.size())
 {
 changeState(Draining);
 DPRINTF(Checkpoint, TableWalker busy, wait to drain\n);
@@ -75,6 +77,16 @@
 }
 }
 
+void
+TableWalker::resume()
+{
+MemObject::resume();
+if ((params()-sys-getMemoryMode() == Enums::timing)  currState) {
+delete currState;
+currState = NULL;
+}
+}
+
 Port*
 TableWalker::getPort(const std::string if_name, int idx)
 {
diff -r 2b65eb281f5f -r 7bf78d12b359 src/arch/arm/table_walker.hh
--- a/src/arch/arm/table_walker.hh  Mon Nov 15 14:04:03 2010 -0600
+++ b/src/arch/arm/table_walker.hh  Mon Nov 15 14:04:03 2010 -0600
@@ -351,6 +351,7 @@
 }
 
 virtual unsigned int drain(Event *de);
+virtual void resume();
 virtual Port *getPort(const std::string if_name, int idx = -1);
 
 Fault walk(RequestPtr req, ThreadContext *tc, uint8_t cid, TLB::Mode mode,
diff -r 2b65eb281f5f -r 7bf78d12b359 src/arch/arm/utility.cc
--- a/src/arch/arm/utility.cc   Mon Nov 15 14:04:03 2010 -0600
+++ b/src/arch/arm/utility.cc   Mon Nov 15 14:04:03 2010 -0600
@@ -133,5 +133,22 @@
 tc-pcState(newPC);
 }
 
+void
+copyRegs(ThreadContext *src, ThreadContext *dest)
+{
+int i;
+for(i = 0; i  TheISA::NumIntRegs; i++)
+dest-setIntReg(i, src-readIntReg(i));
+for(i = 0; i  TheISA::NumFloatRegs; i++)
+dest-setFloatReg(i, src-readFloatReg(i));
+for(i = 0; i  TheISA::NumMiscRegs; i++)
+dest-setMiscRegNoEffect(i, src-readMiscRegNoEffect(i));
 
+// setMiscReg with effect will set the misc register mapping correctly.
+// e.g. updateRegMap(val)
+dest-setMiscReg(MISCREG_CPSR, src-readMiscRegNoEffect(MISCREG_CPSR));
+
+// Lastly copy PC/NPC
+dest-pcState(src-pcState());
 }
+}
diff -r 2b65eb281f5f -r 7bf78d12b359 src/arch/arm/utility.hh
--- a/src/arch/arm/utility.hh   Mon Nov 15 14:04:03 2010 -0600
+++ b/src/arch/arm/utility.hh   Mon Nov 15 14:04:03 2010 -0600
@@ -102,11 +102,7 @@
 tc-activate(0);
 }
 
-static inline void
-copyRegs(ThreadContext *src, ThreadContext *dest)
-{
-panic(Copy Regs Not Implemented Yet\n);
-}
+void copyRegs(ThreadContext *src, ThreadContext *dest);
 
 static inline void
 copyMiscRegs(ThreadContext *src, ThreadContext *dest)
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: ARM: Add support for a dumb IDE controller

2010-11-15 Thread Ali Saidi
changeset 0731d632db76 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=0731d632db76
description:
ARM: Add support for a dumb IDE controller

diffstat:

 configs/common/FSConfig.py |  10 ++
 src/dev/Ide.py |   2 ++
 src/dev/arm/realview.cc|   6 ++
 src/dev/ide_ctrl.cc|  16 +++-
 src/dev/ide_ctrl.hh|   2 ++
 src/dev/pcidev.cc  |   3 ++-
 6 files changed, 33 insertions(+), 6 deletions(-)

diffs (119 lines):

diff -r 859e8bc1cdc2 -r 0731d632db76 configs/common/FSConfig.py
--- a/configs/common/FSConfig.pyMon Nov 15 14:04:03 2010 -0600
+++ b/configs/common/FSConfig.pyMon Nov 15 14:04:03 2010 -0600
@@ -209,6 +209,16 @@
 
 self.mem_mode = mem_mode
 
+#self.cf0 = CowIdeDisk(driveID='master')
+#self.cf0.childImage(mdesc.disk())
+#self.cf_ctrl = IdeController(disks=[self.cf0],
+# pci_func = 0, pci_dev = 0, pci_bus = 0,
+# io_shift = 1, ctrl_offset = 2, Command = 0x1,
+# BAR0 = 0x1800, BAR0Size = '16B',
+# BAR1 = 0x18000100, BAR1Size = '1B',
+# BAR0LegacyIO = True, BAR1LegacyIO = True,)
+#self.cf_ctrl.pio = self.iobus.port
+
 if machine_type == RealView_PBX:
 self.realview = RealViewPBX()
 elif machine_type == RealView_EB:
diff -r 859e8bc1cdc2 -r 0731d632db76 src/dev/Ide.py
--- a/src/dev/Ide.pyMon Nov 15 14:04:03 2010 -0600
+++ b/src/dev/Ide.pyMon Nov 15 14:04:03 2010 -0600
@@ -64,3 +64,5 @@
 BAR3Size = '4B'
 BAR4Size = '16B'
 
+io_shift = Param.UInt32(0x0, IO port shift);
+ctrl_offset = Param.UInt32(0x0, IDE disk control offset)
diff -r 859e8bc1cdc2 -r 0731d632db76 src/dev/arm/realview.cc
--- a/src/dev/arm/realview.cc   Mon Nov 15 14:04:03 2010 -0600
+++ b/src/dev/arm/realview.cc   Mon Nov 15 14:04:03 2010 -0600
@@ -108,15 +108,13 @@
 Addr
 RealView::calcPciConfigAddr(int bus, int dev, int func)
 {
-panic(Need implementation\n);
-M5_DUMMY_RETURN
+return ULL(-1);
 }
 
 Addr
 RealView::calcPciIOAddr(Addr addr)
 {
-panic(Need implementation\n);
-M5_DUMMY_RETURN
+return addr;
 }
 
 Addr
diff -r 859e8bc1cdc2 -r 0731d632db76 src/dev/ide_ctrl.cc
--- a/src/dev/ide_ctrl.cc   Mon Nov 15 14:04:03 2010 -0600
+++ b/src/dev/ide_ctrl.cc   Mon Nov 15 14:04:03 2010 -0600
@@ -84,7 +84,8 @@
 primaryTiming(htole(timeRegWithDecodeEn)),
 secondaryTiming(htole(timeRegWithDecodeEn)),
 deviceTiming(0), udmaControl(0), udmaTiming(0), ideConfig(0),
-ioEnabled(false), bmEnabled(false)
+ioEnabled(false), bmEnabled(false),
+ioShift(p-io_shift), ctrlOffset(p-ctrl_offset)
 {
 if (params()-disks.size()  3)
 panic(IDE controllers support a maximum of 4 devices attached!\n);
@@ -106,6 +107,15 @@
 primary.select(false);
 secondary.select(false);
 
+if ((BARAddrs[0]  ~BAR_IO_MASK) != 0){
+primary.cmdAddr = BARAddrs[0];  primary.cmdSize = BARSize[0];
+primary.ctrlAddr = BARAddrs[1]; primary.ctrlSize = BARAddrs[1];
+}
+if ((BARAddrs[2]  ~BAR_IO_MASK) != 0){
+secondary.cmdAddr = BARAddrs[2];  secondary.cmdSize = BARSize[2];
+secondary.ctrlAddr = BARAddrs[3]; secondary.ctrlSize = BARAddrs[3];
+}
+
 ioEnabled = (config.command  htole(PCI_CMD_IOSE));
 bmEnabled = (config.command  htole(PCI_CMD_BME));
 }
@@ -441,10 +451,14 @@
 if (addr = primary.cmdAddr 
 addr  (primary.cmdAddr + primary.cmdSize)) {
 addr -= primary.cmdAddr;
+// linux may have shifted the address by ioShift,
+// here we shift it back, similarly for ctrlOffset.
+addr = ioShift;
 primary.accessCommand(addr, size, dataPtr, read);
 } else if (addr = primary.ctrlAddr 
addr  (primary.ctrlAddr + primary.ctrlSize)) {
 addr -= primary.ctrlAddr;
+addr += ctrlOffset;
 primary.accessControl(addr, size, dataPtr, read);
 } else if (addr = secondary.cmdAddr 
addr  (secondary.cmdAddr + secondary.cmdSize)) {
diff -r 859e8bc1cdc2 -r 0731d632db76 src/dev/ide_ctrl.hh
--- a/src/dev/ide_ctrl.hh   Mon Nov 15 14:04:03 2010 -0600
+++ b/src/dev/ide_ctrl.hh   Mon Nov 15 14:04:03 2010 -0600
@@ -133,6 +133,8 @@
 bool ioEnabled;
 bool bmEnabled;
 
+uint32_t ioShift, ctrlOffset;
+
 void dispatchAccess(PacketPtr pkt, bool read);
 
   public:
diff -r 859e8bc1cdc2 -r 0731d632db76 src/dev/pcidev.cc
--- a/src/dev/pcidev.cc Mon Nov 15 14:04:03 2010 -0600
+++ b/src/dev/pcidev.cc Mon Nov 15 14:04:03 2010 -0600
@@ -76,7 +76,8 @@
   bool snoop)
 {
 snoop = false;;
-resp.push_back(RangeSize(configAddr, PCI_CONFIG_SIZE+1));
+if (configAddr != ULL(-1))
+resp.push_back(RangeSize(configAddr, PCI_CONFIG_SIZE+1));
 }
 
 
___
m5-dev 

[m5-dev] changeset in m5: ARM: Make utility.hh meet style guidelines

2010-11-15 Thread Ali Saidi
changeset b12a5700f1fa in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=b12a5700f1fa
description:
ARM: Make utility.hh meet style guidelines

diffstat:

 src/arch/arm/utility.hh |  168 
 1 files changed, 84 insertions(+), 84 deletions(-)

diffs (192 lines):

diff -r 0731d632db76 -r b12a5700f1fa src/arch/arm/utility.hh
--- a/src/arch/arm/utility.hh   Mon Nov 15 14:04:03 2010 -0600
+++ b/src/arch/arm/utility.hh   Mon Nov 15 14:04:03 2010 -0600
@@ -56,104 +56,104 @@
 
 namespace ArmISA {
 
-inline PCState
-buildRetPC(const PCState curPC, const PCState callPC)
+inline PCState
+buildRetPC(const PCState curPC, const PCState callPC)
+{
+PCState retPC = callPC;
+retPC.uEnd();
+return retPC;
+}
+
+inline bool
+testPredicate(CPSR cpsr, ConditionCode code)
+{
+switch (code)
 {
-PCState retPC = callPC;
-retPC.uEnd();
-return retPC;
+case COND_EQ: return  cpsr.z;
+case COND_NE: return !cpsr.z;
+case COND_CS: return  cpsr.c;
+case COND_CC: return !cpsr.c;
+case COND_MI: return  cpsr.n;
+case COND_PL: return !cpsr.n;
+case COND_VS: return  cpsr.v;
+case COND_VC: return !cpsr.v;
+case COND_HI: return  (cpsr.c  !cpsr.z);
+case COND_LS: return !(cpsr.c  !cpsr.z);
+case COND_GE: return !(cpsr.n ^ cpsr.v);
+case COND_LT: return  (cpsr.n ^ cpsr.v);
+case COND_GT: return !(cpsr.n ^ cpsr.v || cpsr.z);
+case COND_LE: return  (cpsr.n ^ cpsr.v || cpsr.z);
+case COND_AL: return true;
+case COND_UC: return true;
+default:
+panic(Unhandled predicate condition: %d\n, code);
 }
+}
 
-inline bool
-testPredicate(CPSR cpsr, ConditionCode code)
-{
-switch (code)
-{
-case COND_EQ: return  cpsr.z;
-case COND_NE: return !cpsr.z;
-case COND_CS: return  cpsr.c;
-case COND_CC: return !cpsr.c;
-case COND_MI: return  cpsr.n;
-case COND_PL: return !cpsr.n;
-case COND_VS: return  cpsr.v;
-case COND_VC: return !cpsr.v;
-case COND_HI: return  (cpsr.c  !cpsr.z);
-case COND_LS: return !(cpsr.c  !cpsr.z);
-case COND_GE: return !(cpsr.n ^ cpsr.v);
-case COND_LT: return  (cpsr.n ^ cpsr.v);
-case COND_GT: return !(cpsr.n ^ cpsr.v || cpsr.z);
-case COND_LE: return  (cpsr.n ^ cpsr.v || cpsr.z);
-case COND_AL: return true;
-case COND_UC: return true;
-default:
-panic(Unhandled predicate condition: %d\n, code);
-}
-}
+/**
+ * Function to insure ISA semantics about 0 registers.
+ * @param tc The thread context.
+ */
+template class TC
+void zeroRegisters(TC *tc);
 
-/**
- * Function to insure ISA semantics about 0 registers.
- * @param tc The thread context.
- */
-template class TC
-void zeroRegisters(TC *tc);
+inline void startupCPU(ThreadContext *tc, int cpuId)
+{
+tc-activate(0);
+}
 
-inline void startupCPU(ThreadContext *tc, int cpuId)
-{
-tc-activate(0);
-}
+void copyRegs(ThreadContext *src, ThreadContext *dest);
 
-void copyRegs(ThreadContext *src, ThreadContext *dest);
+static inline void
+copyMiscRegs(ThreadContext *src, ThreadContext *dest)
+{
+panic(Copy Misc. Regs Not Implemented Yet\n);
+}
 
-static inline void
-copyMiscRegs(ThreadContext *src, ThreadContext *dest)
-{
-panic(Copy Misc. Regs Not Implemented Yet\n);
-}
+void initCPU(ThreadContext *tc, int cpuId);
 
-void initCPU(ThreadContext *tc, int cpuId);
-
-static inline bool
-inUserMode(CPSR cpsr)
-{
-return cpsr.mode == MODE_USER;
-}
+static inline bool
+inUserMode(CPSR cpsr)
+{
+return cpsr.mode == MODE_USER;
+}
 
-static inline bool
-inUserMode(ThreadContext *tc)
-{
-return inUserMode(tc-readMiscRegNoEffect(MISCREG_CPSR));
-}
+static inline bool
+inUserMode(ThreadContext *tc)
+{
+return inUserMode(tc-readMiscRegNoEffect(MISCREG_CPSR));
+}
 
-static inline bool
-inPrivilegedMode(CPSR cpsr)
-{
-return !inUserMode(cpsr);
-}
+static inline bool
+inPrivilegedMode(CPSR cpsr)
+{
+return !inUserMode(cpsr);
+}
 
-static inline bool
-inPrivilegedMode(ThreadContext *tc)
-{
-return !inUserMode(tc);
-}
+static inline bool
+inPrivilegedMode(ThreadContext *tc)
+{
+return !inUserMode(tc);
+}
 
-static inline bool
-vfpEnabled(CPACR cpacr, CPSR cpsr)
-{
-return cpacr.cp10 == 0x3 ||
-(cpacr.cp10 == 0x1  inPrivilegedMode(cpsr));
-}
+static inline bool
+vfpEnabled(CPACR cpacr, CPSR cpsr)
+{
+return cpacr.cp10 == 0x3 ||
+(cpacr.cp10 == 0x1  inPrivilegedMode(cpsr));
+}
 
-static inline bool
-vfpEnabled(CPACR cpacr, CPSR cpsr, FPEXC 

[m5-dev] changeset in m5: ARM: Add support for GDB on ARM

2010-11-15 Thread William Wang
changeset 08e1e28a062a in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=08e1e28a062a
description:
ARM: Add support for GDB on ARM

diffstat:

 src/arch/arm/SConscript|1 +
 src/arch/arm/remote_gdb.cc |  346 +
 src/arch/arm/remote_gdb.hh |   45 +++--
 src/arch/arm/utility.cc|   13 +
 src/arch/arm/utility.hh|3 +
 5 files changed, 389 insertions(+), 19 deletions(-)

diffs (truncated from 457 to 300 lines):

diff -r b12a5700f1fa -r 08e1e28a062a src/arch/arm/SConscript
--- a/src/arch/arm/SConscript   Mon Nov 15 14:04:03 2010 -0600
+++ b/src/arch/arm/SConscript   Mon Nov 15 14:04:03 2010 -0600
@@ -60,6 +60,7 @@
 Source('nativetrace.cc')
 Source('tlb.cc')
 Source('utility.cc')
+Source('remote_gdb.cc')
 
 SimObject('ArmNativeTrace.py')
 SimObject('ArmTLB.py')
diff -r b12a5700f1fa -r 08e1e28a062a src/arch/arm/remote_gdb.cc
--- /dev/null   Thu Jan 01 00:00:00 1970 +
+++ b/src/arch/arm/remote_gdb.ccMon Nov 15 14:04:03 2010 -0600
@@ -0,0 +1,346 @@
+/*
+ * Copyright (c) 2010 ARM Limited
+ * All rights reserved
+ *
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder.  You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
+ *
+ * Copyright (c) 2002-2005 The Regents of The University of Michigan
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * Authors: Nathan Binkert
+ *  William Wang
+ */
+
+/*
+ * Copyright (c) 1990, 1993
+ *  The Regents of the University of California.  All rights reserved.
+ *
+ * This software was developed by the Computer Systems Engineering group
+ * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+ * contributed to Berkeley.
+ *
+ * All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ *  This product includes software developed by the University of
+ *  California, Lawrence Berkeley Laboratories.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *must display the following acknowledgement:
+ *  This product includes software developed by the University of
+ *  California, Berkeley and its contributors.
+ * 4. Neither the name of the University nor the names of its contributors
+ *may be used to endorse or promote products derived from this software
+ *without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED 

[m5-dev] changeset in m5: SCons: Cleanup SCons output during compile

2010-11-15 Thread Ali Saidi
changeset 846fb3ffe0dc in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=846fb3ffe0dc
description:
SCons: Cleanup SCons output during compile

diffstat:

 SConstruct |  65 -
 src/SConscript |  48 +++-
 src/arch/SConscript|   3 +-
 src/arch/isa_parser.py |   2 +-
 src/cpu/SConscript |   2 +-
 5 files changed, 82 insertions(+), 38 deletions(-)

diffs (truncated from 320 to 300 lines):

diff -r 5c374c1e0075 -r 846fb3ffe0dc SConstruct
--- a/SConstructMon Nov 15 14:04:03 2010 -0600
+++ b/SConstructMon Nov 15 14:04:04 2010 -0600
@@ -272,6 +272,7 @@
 # Make sure build_root exists (might not if this is the first build there)
 if not isdir(build_root):
 mkdir(build_root)
+main['BUILDROOT'] = build_root
 
 Export('main')
 
@@ -306,6 +307,7 @@
 global_sticky_vars_file = joinpath(build_root, 'variables.global')
 
 global_sticky_vars = Variables(global_sticky_vars_file, args=ARGUMENTS)
+global_nonsticky_vars = Variables(args=ARGUMENTS)
 
 global_sticky_vars.AddVariables(
 ('CC', 'C compiler', environ.get('CC', main['CC'])),
@@ -317,6 +319,12 @@
  PathListAllExist, PathListMakeAbsolute),
 )
 
+global_nonsticky_vars.AddVariables(
+('VERBOSE', 'Print full tool command lines', False),
+('update_ref', 'Update test reference outputs', False)
+)
+
+
 # base help text
 help_text = '''
 Usage: scons [scons options] [build options] [target(s)]
@@ -326,8 +334,10 @@
 
 # Update main environment with values from ARGUMENTS  global_sticky_vars_file
 global_sticky_vars.Update(main)
+global_nonsticky_vars.Update(main)
 
 help_text += global_sticky_vars.GenerateHelpText(main)
+help_text += global_nonsticky_vars.GenerateHelpText(main)
 
 # Save sticky variable settings back to current variables file
 global_sticky_vars.Save(global_sticky_vars_file, main)
@@ -346,6 +356,40 @@
 # the ext directory should be on the #includes path
 main.Append(CPPPATH=[Dir('ext')])
 
+def _STRIP(path, env):
+path = str(path)
+variant_base = env['BUILDROOT'] + os.path.sep
+if path.startswith(variant_base):
+path = path[len(variant_base):]
+elif path.startswith('build/'):
+path = path[6:]
+return path
+
+def _STRIP_SOURCE(target, source, env, for_signature):
+return _STRIP(source[0], env)
+main['STRIP_SOURCE'] = _STRIP_SOURCE
+
+def _STRIP_TARGET(target, source, env, for_signature):
+return _STRIP(target[0], env)
+main['STRIP_TARGET'] = _STRIP_TARGET
+
+if main['VERBOSE']:
+def MakeAction(action, string, *args, **kwargs):
+return Action(action, *args, **kwargs)
+else:
+MakeAction = Action
+main['CCCOMSTR']= ' [  CC] $STRIP_SOURCE'
+main['CXXCOMSTR']   = ' [ CXX] $STRIP_SOURCE'
+main['ASCOMSTR']= ' [  AS] $STRIP_SOURCE'
+main['SWIGCOMSTR']  = ' [SWIG] $STRIP_SOURCE'
+main['ARCOMSTR']= ' [  AR] $STRIP_TARGET'
+main['LINKCOMSTR']  = ' [LINK] $STRIP_TARGET'
+main['RANLIBCOMSTR']= ' [  RANLIB] $STRIP_TARGET'
+main['M4COMSTR']= ' [  M4] $STRIP_TARGET'
+main['SHCCCOMSTR']  = ' [SHCC] $STRIP_TARGET'
+main['SHCXXCOMSTR'] = ' [   SHCXX] $STRIP_TARGET'
+Export('MakeAction')
+
 CXX_version = readCommand([main['CXX'],'--version'], exception=False)
 CXX_V = readCommand([main['CXX'],'-V'], exception=False)
 
@@ -666,10 +710,6 @@
 export_vars = []
 Export('export_vars')
 
-# Non-sticky variables only apply to the current build.
-nonsticky_vars = Variables(args=ARGUMENTS)
-Export('nonsticky_vars')
-
 # Walk the tree and execute all SConsopts scripts that wil add to the
 # above variables
 for bdir in [ base_dir ] + extras_dir_list:
@@ -706,10 +746,6 @@
 BoolVariable('RUBY', 'Build with Ruby', False),
 )
 
-nonsticky_vars.AddVariables(
-BoolVariable('update_ref', 'Update test reference outputs', False)
-)
-
 # These variables get exported to #defines in config/*.hh (see src/SConscript).
 export_vars += ['FULL_SYSTEM', 'USE_FENV', 'USE_MYSQL',
 'NO_FAST_ALLOC', 'FAST_ALLOC_DEBUG', 'FAST_ALLOC_STATS',
@@ -787,15 +823,11 @@
 print f, '#include %s/%s/%s' % (dname, isa, basename(fname))
 f.close()
 
-# String to print when generating header
-def gen_switch_hdr_string(target, source, env):
-return Generating switch header  + str(target[0])
-
 # Build SCons Action object. 'varlist' specifies env vars that this
 # action depends on; when env['ALL_ISA_LIST'] changes these actions
 # should get re-executed.
-switch_hdr_action = Action(gen_switch_hdr, gen_switch_hdr_string,
-   varlist=['ALL_ISA_LIST'])
+switch_hdr_action = MakeAction(gen_switch_hdr,
+  [GENERATE] $STRIP_TARGET, varlist=['ALL_ISA_LIST'])
 
 # Instantiate actions for each header
 for hdr in switch_headers:
@@ -852,12 +884,9 @@

[m5-dev] changeset in m5: O3: prevent a squash when completeAcc() modifie...

2010-11-15 Thread Min Kyu Jeong
changeset 28a677d7cb51 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=28a677d7cb51
description:
O3: prevent a squash when completeAcc() modifies misc reg through TC.

This happens on ARM instructions when they update the IT state bits.
Code and associated comment was copied from execute() and initiateAcc() 
methods

diffstat:

 src/cpu/o3/dyn_inst_impl.hh |  9 +
 1 files changed, 9 insertions(+), 0 deletions(-)

diffs (21 lines):

diff -r d7360f5052b2 -r 28a677d7cb51 src/cpu/o3/dyn_inst_impl.hh
--- a/src/cpu/o3/dyn_inst_impl.hh   Mon Nov 15 14:04:04 2010 -0600
+++ b/src/cpu/o3/dyn_inst_impl.hh   Mon Nov 15 14:04:04 2010 -0600
@@ -113,8 +113,17 @@
 Fault
 BaseO3DynInstImpl::completeAcc(PacketPtr pkt)
 {
+// @todo: Pretty convoluted way to avoid squashing from happening
+// when using the TC during an instruction's execution
+// (specifically for instructions that have side-effects that use
+// the TC).  Fix this.
+bool in_syscall = this-thread-inSyscall;
+this-thread-inSyscall = true;
+
 this-fault = this-staticInst-completeAcc(pkt, this, this-traceData);
 
+this-thread-inSyscall = in_syscall;
+
 return this-fault;
 }
 
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: CPU/ARM: Add SIMD op classes to CPU models and ...

2010-11-15 Thread Giacomo Gabrielli
changeset e93e7e0caae1 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=e93e7e0caae1
description:
CPU/ARM: Add SIMD op classes to CPU models and ARM ISA.

diffstat:

 src/arch/arm/isa/insts/div.isa  |6 +-
 src/arch/arm/isa/insts/fp.isa   |  278 ++-
 src/arch/arm/isa/insts/mult.isa |6 +-
 src/arch/arm/isa/insts/neon.isa |  692 ---
 src/cpu/FuncUnit.py |   17 +
 src/cpu/o3/FUPool.py|2 +-
 src/cpu/o3/FuncUnitConfig.py|   35 ++
 src/cpu/op_class.hh |   32 +
 8 files changed, 634 insertions(+), 434 deletions(-)

diffs (truncated from 2818 to 300 lines):

diff -r cf222bd91228 -r e93e7e0caae1 src/arch/arm/isa/insts/div.isa
--- a/src/arch/arm/isa/insts/div.isaMon Nov 15 14:04:04 2010 -0600
+++ b/src/arch/arm/isa/insts/div.isaMon Nov 15 14:04:04 2010 -0600
@@ -56,7 +56,8 @@
 '''
 sdivIop = InstObjParams(sdiv, Sdiv, RegRegRegOp,
 { code: sdivCode,
-  predicate_test: predicateTest }, [])
+  predicate_test: predicateTest,
+  op_class: IntDivOp}, [])
 header_output = RegRegRegOpDeclare.subst(sdivIop)
 decoder_output = RegRegRegOpConstructor.subst(sdivIop)
 exec_output = PredOpExecute.subst(sdivIop)
@@ -77,7 +78,8 @@
 '''
 udivIop = InstObjParams(udiv, Udiv, RegRegRegOp,
 { code: udivCode,
-  predicate_test: predicateTest }, [])
+  predicate_test: predicateTest,
+  op_class: IntDivOp}, [])
 header_output += RegRegRegOpDeclare.subst(udivIop)
 decoder_output += RegRegRegOpConstructor.subst(udivIop)
 exec_output += PredOpExecute.subst(udivIop)
diff -r cf222bd91228 -r e93e7e0caae1 src/arch/arm/isa/insts/fp.isa
--- a/src/arch/arm/isa/insts/fp.isa Mon Nov 15 14:04:04 2010 -0600
+++ b/src/arch/arm/isa/insts/fp.isa Mon Nov 15 14:04:04 2010 -0600
@@ -194,7 +194,8 @@
 vmsrIop = InstObjParams(vmsr, Vmsr, FpRegRegOp,
 { code: vmsrEnabledCheckCode + \
   MiscDest = Op1;,
-  predicate_test: predicateTest },
+  predicate_test: predicateTest,
+  op_class: SimdFloatMiscOp },
  [IsSerializeAfter,IsNonSpeculative])
 header_output += FpRegRegOpDeclare.subst(vmsrIop);
 decoder_output += FpRegRegOpConstructor.subst(vmsrIop);
@@ -206,15 +207,17 @@
 '''
 vmsrFpscrIop = InstObjParams(vmsr, VmsrFpscr, FpRegRegOp,
  { code: vmsrFpscrCode,
-   predicate_test: predicateTest }, [])
+   predicate_test: predicateTest,
+   op_class: SimdFloatMiscOp }, [])
 header_output += FpRegRegOpDeclare.subst(vmsrFpscrIop);
 decoder_output += FpRegRegOpConstructor.subst(vmsrFpscrIop);
 exec_output += PredOpExecute.subst(vmsrFpscrIop);
 
 vmrsIop = InstObjParams(vmrs, Vmrs, FpRegRegOp,
 { code: vmrsEnabledCheckCode + \
-  Dest = MiscOp1;,
-  predicate_test: predicateTest }, [])
+Dest = MiscOp1;,
+  predicate_test: predicateTest,
+  op_class: SimdFloatMiscOp }, [])
 header_output += FpRegRegOpDeclare.subst(vmrsIop);
 decoder_output += FpRegRegOpConstructor.subst(vmrsIop);
 exec_output += PredOpExecute.subst(vmrsIop);
@@ -222,7 +225,8 @@
 vmrsFpscrIop = InstObjParams(vmrs, VmrsFpscr, FpRegRegOp,
  { code: vmrsEnabledCheckCode + \
Dest = Fpscr | FpCondCodes;,
-   predicate_test: predicateTest }, [])
+   predicate_test: predicateTest,
+   op_class: SimdFloatMiscOp }, [])
 header_output += FpRegRegOpDeclare.subst(vmrsFpscrIop);
 decoder_output += FpRegRegOpConstructor.subst(vmrsFpscrIop);
 exec_output += PredOpExecute.subst(vmrsFpscrIop);
@@ -232,7 +236,8 @@
 '''
 vmrsApsrIop = InstObjParams(vmrs, VmrsApsr, FpRegRegImmOp,
 { code: vmrsApsrCode,
-  predicate_test: predicateTest }, [])
+  predicate_test: predicateTest,
+  op_class: SimdFloatMiscOp }, [])
 header_output += FpRegRegImmOpDeclare.subst(vmrsApsrIop);
 decoder_output += FpRegRegImmOpConstructor.subst(vmrsApsrIop);
 exec_output += PredOpExecute.subst(vmrsApsrIop);
@@ -243,7 +248,8 @@
 '''
 vmrsApsrFpscrIop = InstObjParams(vmrs, VmrsApsrFpscr, 

[m5-dev] changeset in m5: ARM: Add comment about the organization of the ...

2010-11-15 Thread Ali Saidi
changeset 6e399e631a43 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=6e399e631a43
description:
ARM: Add comment about the organization of the IT state register

diffstat:

 src/arch/arm/miscregs.hh |  6 ++
 1 files changed, 6 insertions(+), 0 deletions(-)

diffs (16 lines):

diff -r 50d219ed2a59 -r 6e399e631a43 src/arch/arm/miscregs.hh
--- a/src/arch/arm/miscregs.hh  Mon Nov 15 14:04:05 2010 -0600
+++ b/src/arch/arm/miscregs.hh  Mon Nov 15 14:04:05 2010 -0600
@@ -262,6 +262,12 @@
 EndBitUnion(CPSR)
 
 BitUnion8(ITSTATE)
+/* Note that the split (cond, mask) below is not as in ARM ARM.
+ * But it is more convenient for simulation. The condition
+ * is always the concatenation of the top 3 bits and the next bit,
+ * which applies when one of the bottom 4 bits is set.
+ * Refer to predecoder.cc for the use case.
+ */
 Bitfield7, 4 cond;
 Bitfield3, 0 mask;
 // Bitfields for moving to/from CPSR
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


[m5-dev] changeset in m5: O3: reset architetural state by calling clear()

2010-11-15 Thread Ali Saidi
changeset ff2213d13e58 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=ff2213d13e58
description:
O3: reset architetural state by calling clear()

diffstat:

 src/cpu/o3/thread_context_impl.hh |  16 +++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diffs (31 lines):

diff -r 6e399e631a43 -r ff2213d13e58 src/cpu/o3/thread_context_impl.hh
--- a/src/cpu/o3/thread_context_impl.hh Mon Nov 15 14:04:05 2010 -0600
+++ b/src/cpu/o3/thread_context_impl.hh Mon Nov 15 14:04:05 2010 -0600
@@ -1,4 +1,16 @@
 /*
+ * Copyright (c) 2010 ARM Limited
+ * All rights reserved
+ *
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder.  You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
+ *
  * Copyright (c) 2004-2006 The Regents of The University of Michigan
  * All rights reserved.
  *
@@ -257,7 +269,9 @@
 template class Impl
 void
 O3ThreadContextImpl::clearArchRegs()
-{}
+{
+cpu-isa[thread-threadId()].clear();
+}
 
 template class Impl
 uint64_t
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] Review Request: O3: Make all instructions that write a misc register not perform the write until commit.

2010-11-15 Thread Ali Saidi


 On 2010-11-10 08:07:39, Steve Reinhardt wrote:
  So it looks like whether you call setMiscReg() or setMiscRegNoEffect() then 
  you buffer the update and call setMiscReg() later... i.e., even if you 
  called setMiscRegNoEffect() originally you end up calling setMiscReg() at 
  commit.
  
  Are there ever cases where we call setMiscRegNoEffect() from an 
  instruction?  I thought it was strictly for things like system 
  initialization and restoring from checkpoints anyway... maybe we don't need 
  it in the ExecContext interface.
  
  Also, I see that these predate your change, but why do we need both the 
  setMiscReg() calls and the setMiscRegOperand() calls?  Is one of them 
  deprecated?  Can we take this opportunity to update the comments to 
  distinguish them?  We shouldn't have two different functions for which the 
  descriptive comment is completely identical IMO.
 
 
 Ali Saidi wrote:
 You're right... The only place i can find an xc using 
 setMiscRegNoEffect() is locked_mem.hh for alpha and what is the exact copy of 
 it for MIPS. It seems like that could be setMiscReg(). The implementation for 
 LOCKED_ADDR is identical (there are no effects). Perhaps we should remove it 
 from the xc. My guess was that it was used with the intention of making it 
 cheaper by not having the cpu squash when it happens, but in reality that 
 didn't work out. 
 
 The difference between the operand and no operand version is that the 
 operand version gets the dest misc register from the instruction while the 
 non-operand one expects it passed in as a parameter. One should be 
 implemented in terms of the other, but both seem to be used.
 
 Gabe Black wrote:
 Yeah, I think generally setMiscRegOperand is going to be called from 
 generated code and setMiscReg is going to be used by handwritten code where 
 the index is provided directly.

Ok... I removed the NoEffect versions from the exec context and changed the 
*Operand versions to just call their non-operand versions which cleans up the 
code some. Alpha has no problem with these changes, but they do uncover a bug 
with SPARC that somehow worked, but it's amazing that it did. The ASI register 
changes the type of instruction that is executing (e.g. one ASI is a type of 
prefetch vs. load vs. load with a different addressing mode etc). The types are 
decoded from the ASI bits in the ExtMachInst which are inserted by the 
pre-decoder. The trouble is that these bits are inserted in fetch which is 
before rename so the IsSerializing flags don't prevent it from happening. Thus, 
while the wrasi instruction can be marked as Serializing fetch already has read 
the old value and created the instructions based on the old ASI. When wrasi 
commits the old instructions flow through the rest of the pipeline and that 
isn't great. It's amazing that all the code sequences that Gabe used to run on 
the sparc/o3 model never ran into this issue. With the current code if you 
executed a alternating wrasi and load w/asi instructions you would get some 
very odd results. Anyway, the question becomes how do we fix this??? My current 
solution is to add an instruction flag that after commit flushes the CPU. 
Although, I don't know if this is enough and what other surprises I'll run into.

Thoughts?

Ali


- Ali


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


On 2010-11-08 15:46:52, Ali Saidi wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/298/
 ---
 
 (Updated 2010-11-08 15:46:52)
 
 
 Review request for Default.
 
 
 Summary
 ---
 
 O3: Make all instructions that write a misc register not perform the write 
 until commit.
 
 ARM Instructions updating cumulative flags (ARM FP exceptions and saturation
 flags) are not serialized.
 
 Added aliases for ARM FP exceptions and saturation flags in FPSCR.
 
 
 Diffs
 -
 
   src/arch/arm/isa.cc f61e079ad05e 
   src/arch/arm/isa/insts/fp.isa f61e079ad05e 
   src/arch/arm/isa/insts/neon.isa f61e079ad05e 
   src/arch/arm/isa/operands.isa f61e079ad05e 
   src/arch/arm/miscregs.hh f61e079ad05e 
   src/cpu/o3/commit_impl.hh f61e079ad05e 
   src/cpu/o3/dyn_inst.hh f61e079ad05e 
   src/cpu/o3/dyn_inst_impl.hh f61e079ad05e 
 
 Diff: http://reviews.m5sim.org/r/298/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Ali
 


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


Re: [m5-dev] Review Request: O3: Make all instructions that write a misc register not perform the write until commit.

2010-11-15 Thread Ali Saidi

On Nov 15, 2010, at 8:29 PM, Gabriel Michael Black wrote:
 It seems like our notion of serializing came from the definition Alpha uses, 
 and sometimes we need a stronger one. X86 is going to have similar issues in 
 some cases, although I couldn't necessarily list them for you off hand. The 
 nuke everything flag your proposing might be the best solution because I 
 doubt we'd ever need anything stronger than that. Maybe you could make the 
 CPU stop fetching too, but I don't see how that would be useful and it's 
 probably very hard to do.
 
 This also highlights the usefulness of target tests of particular features 
 like changing the ISA and then immediately using it as apposed to getting 
 specific workloads to work. The compiler, code author, etc., only wants to 
 achieve a functional result, and they'll probably use the same structure and 
 features over and over again since those work well, are equivalently good to 
 the other options, etc. There are swathes of x86, which granted is very 
 large, that aren't implemented at all and Linux boots just fine, but 
 depending on how picky you are you could say those areas are severely broken. 
 The same thing could be happening less intentionally elsewhere.

I don't mean to pick on you Gabe, I'm just surprised that when the compiler 
inserts wr asi in happens to also include enough padding before it needs it 
that it worked in the past. I think the load that used it would minimally have 
to be a cache line away. It's just bizarre to me unless there was an interlock 
on wr asi that they knew about. Anyway, I've added a flag called isSquashState. 
I don't like the name, so please propose a better one. isSquashAfter? After 
commit in the o3 cpu it checks for the flag and squashes the world. This clears 
up the issue enough for gzip to start running. I should know in 3 hours if it 
is sufficient.

Ali

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


Re: [m5-dev] Review Request: O3: Make all instructions that write a misc register not perform the write until commit.

2010-11-15 Thread Gabriel Michael Black

Quoting Ali Saidi sa...@umich.edu:



On Nov 15, 2010, at 8:29 PM, Gabriel Michael Black wrote:
It seems like our notion of serializing came from the definition  
Alpha uses, and sometimes we need a stronger one. X86 is going to  
have similar issues in some cases, although I couldn't necessarily  
list them for you off hand. The nuke everything flag your  
proposing might be the best solution because I doubt we'd ever need  
anything stronger than that. Maybe you could make the CPU stop  
fetching too, but I don't see how that would be useful and it's  
probably very hard to do.


This also highlights the usefulness of target tests of particular  
features like changing the ISA and then immediately using it as  
apposed to getting specific workloads to work. The compiler, code  
author, etc., only wants to achieve a functional result, and  
they'll probably use the same structure and features over and over  
again since those work well, are equivalently good to the other  
options, etc. There are swathes of x86, which granted is very  
large, that aren't implemented at all and Linux boots just fine,  
but depending on how picky you are you could say those areas are  
severely broken. The same thing could be happening less  
intentionally elsewhere.


I don't mean to pick on you Gabe, I'm just surprised that when the  
compiler inserts wr asi in happens to also include enough padding  
before it needs it that it worked in the past. I think the load that  
used it would minimally have to be a cache line away. It's just  
bizarre to me unless there was an interlock on wr asi that they knew  
about. Anyway, I've added a flag called isSquashState. I don't like  
the name, so please propose a better one. isSquashAfter? After  
commit in the o3 cpu it checks for the flag and squashes the world.  
This clears up the issue enough for gzip to start running. I should  
know in 3 hours if it is sufficient.


Ali

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



No problem, I didn't think you were picking on me :-). Weren't there  
fake faults introduced to ARM that were used for a similar effect? The  
flag approach is better I think, but the instructions that throw that  
fault could be refitted, right?


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


Re: [m5-dev] Review Request: O3: Make all instructions that write a misc register not perform the write until commit.

2010-11-15 Thread Ali Saidi

On Nov 15, 2010, at 8:44 PM, Gabriel Michael Black wrote:

 Quoting Ali Saidi sa...@umich.edu:
 
 
 On Nov 15, 2010, at 8:29 PM, Gabriel Michael Black wrote:
 It seems like our notion of serializing came from the definition Alpha 
 uses, and sometimes we need a stronger one. X86 is going to have similar 
 issues in some cases, although I couldn't necessarily list them for you off 
 hand. The nuke everything flag your proposing might be the best solution 
 because I doubt we'd ever need anything stronger than that. Maybe you could 
 make the CPU stop fetching too, but I don't see how that would be useful 
 and it's probably very hard to do.
 
 This also highlights the usefulness of target tests of particular features 
 like changing the ISA and then immediately using it as apposed to getting 
 specific workloads to work. The compiler, code author, etc., only wants to 
 achieve a functional result, and they'll probably use the same structure 
 and features over and over again since those work well, are equivalently 
 good to the other options, etc. There are swathes of x86, which granted is 
 very large, that aren't implemented at all and Linux boots just fine, but 
 depending on how picky you are you could say those areas are severely 
 broken. The same thing could be happening less intentionally elsewhere.
 
 I don't mean to pick on you Gabe, I'm just surprised that when the compiler 
 inserts wr asi in happens to also include enough padding before it needs it 
 that it worked in the past. I think the load that used it would minimally 
 have to be a cache line away. It's just bizarre to me unless there was an 
 interlock on wr asi that they knew about. Anyway, I've added a flag called 
 isSquashState. I don't like the name, so please propose a better one. 
 isSquashAfter? After commit in the o3 cpu it checks for the flag and 
 squashes the world. This clears up the issue enough for gzip to start 
 running. I should know in 3 hours if it is sufficient.
 
 Ali
 
 ___
 m5-dev mailing list
 m5-dev@m5sim.org
 http://m5sim.org/mailman/listinfo/m5-dev
 
 
 No problem, I didn't think you were picking on me :-). Weren't there fake 
 faults introduced to ARM that were used for a similar effect? The flag 
 approach is better I think, but the instructions that throw that fault could 
 be refitted, right?
The fault is another level that is even more strict. The fault requires the 
store queue to completely drain before continuing, while this doesn't. 
Retrofitting it wouldn't be enough and perhaps there are three levels. Stall 
rename, squash and refetch, and squash, refetch, and drain.

Ali


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


[m5-dev] changeset in m5: O3: Make O3 support variably lengthed instructi...

2010-11-15 Thread Gabe Black
changeset 03efcdc3421f in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=03efcdc3421f
description:
O3: Make O3 support variably lengthed instructions.

diffstat:

 src/arch/alpha/predecoder.hh |   11 +-
 src/arch/mips/predecoder.hh  |   11 +-
 src/arch/power/predecoder.hh |8 +-
 src/arch/sparc/predecoder.hh |   13 +-
 src/cpu/base.hh  |3 +
 src/cpu/o3/fetch.hh  |   13 +-
 src/cpu/o3/fetch_impl.hh |  272 +++---
 src/cpu/simple/base.hh   |3 -
 8 files changed, 196 insertions(+), 138 deletions(-)

diffs (truncated from 689 to 300 lines):

diff -r ff2213d13e58 -r 03efcdc3421f src/arch/alpha/predecoder.hh
--- a/src/arch/alpha/predecoder.hh  Mon Nov 15 14:04:05 2010 -0600
+++ b/src/arch/alpha/predecoder.hh  Mon Nov 15 19:37:03 2010 -0800
@@ -47,10 +47,11 @@
 
 // The extended machine instruction being generated
 ExtMachInst ext_inst;
+bool emiIsReady;
 
   public:
 Predecoder(ThreadContext * _tc)
-: tc(_tc)
+: tc(_tc), emiIsReady(false)
 {}
 
 ThreadContext *
@@ -71,7 +72,9 @@
 
 void
 reset()
-{ }
+{
+emiIsReady = false;
+}
 
 // Use this to give data to the predecoder. This should be used
 // when there is control flow.
@@ -79,6 +82,7 @@
 moreBytes(const PCState pc, Addr fetchPC, MachInst inst)
 {
 ext_inst = inst;
+emiIsReady = true;
 #if FULL_SYSTEM
 ext_inst |= (static_castExtMachInst(pc.pc()  0x1)  32);
 #endif
@@ -93,13 +97,14 @@
 bool
 extMachInstReady()
 {
-return true;
+return emiIsReady;
 }
 
 // This returns a constant reference to the ExtMachInst to avoid a copy
 const ExtMachInst 
 getExtMachInst(PCState pc)
 {
+emiIsReady = false;
 return ext_inst;
 }
 };
diff -r ff2213d13e58 -r 03efcdc3421f src/arch/mips/predecoder.hh
--- a/src/arch/mips/predecoder.hh   Mon Nov 15 14:04:05 2010 -0600
+++ b/src/arch/mips/predecoder.hh   Mon Nov 15 19:37:03 2010 -0800
@@ -47,9 +47,10 @@
 ThreadContext * tc;
 //The extended machine instruction being generated
 ExtMachInst emi;
+bool emiIsReady;
 
   public:
-Predecoder(ThreadContext * _tc) : tc(_tc)
+Predecoder(ThreadContext * _tc) : tc(_tc), emiIsReady(false)
 {}
 
 ThreadContext *getTC()
@@ -70,7 +71,9 @@
 
 void
 reset()
-{}
+{
+emiIsReady = false;
+}
 
 //Use this to give data to the predecoder. This should be used
 //when there is control flow.
@@ -78,6 +81,7 @@
 moreBytes(const PCState pc, Addr fetchPC, MachInst inst)
 {
 emi = inst;
+emiIsReady = true;
 }
 
 bool
@@ -89,13 +93,14 @@
 bool
 extMachInstReady()
 {
-return true;
+return emiIsReady;
 }
 
 //This returns a constant reference to the ExtMachInst to avoid a copy
 const ExtMachInst 
 getExtMachInst(PCState pc)
 {
+emiIsReady = false;
 return emi;
 }
 };
diff -r ff2213d13e58 -r 03efcdc3421f src/arch/power/predecoder.hh
--- a/src/arch/power/predecoder.hh  Mon Nov 15 14:04:05 2010 -0600
+++ b/src/arch/power/predecoder.hh  Mon Nov 15 19:37:03 2010 -0800
@@ -51,10 +51,11 @@
 
 // The extended machine instruction being generated
 ExtMachInst emi;
+bool emiIsReady;
 
   public:
 Predecoder(ThreadContext * _tc)
-: tc(_tc)
+: tc(_tc), emiIsReady(false)
 {
 }
 
@@ -78,6 +79,7 @@
 void
 reset()
 {
+emiIsReady = false;
 }
 
 // Use this to give data to the predecoder. This should be used
@@ -86,6 +88,7 @@
 moreBytes(const PCState pc, Addr fetchPC, MachInst inst)
 {
 emi = inst;
+emiIsReady = true;
 }
 
 // Use this to give data to the predecoder. This should be used
@@ -105,13 +108,14 @@
 bool
 extMachInstReady()
 {
-return true;
+return emiIsReady;
 }
 
 // This returns a constant reference to the ExtMachInst to avoid a copy
 const ExtMachInst 
 getExtMachInst(PCState pcState)
 {
+emiIsReady = false;
 return emi;
 }
 };
diff -r ff2213d13e58 -r 03efcdc3421f src/arch/sparc/predecoder.hh
--- a/src/arch/sparc/predecoder.hh  Mon Nov 15 14:04:05 2010 -0600
+++ b/src/arch/sparc/predecoder.hh  Mon Nov 15 19:37:03 2010 -0800
@@ -49,9 +49,10 @@
 ThreadContext * tc;
 // The extended machine instruction being generated
 ExtMachInst emi;
+bool emiIsReady;
 
   public:
-Predecoder(ThreadContext * _tc) : tc(_tc)
+Predecoder(ThreadContext * _tc) : tc(_tc), emiIsReady(false)
 {}
 
 ThreadContext *
@@ -67,7 +68,11 @@
 }
 
 void process() {}
-void reset() {}
+void
+reset()
+{
+emiIsReady = false;
+}
 
 // Use this to give data to the predecoder. This should be used
 // when there is control flow.
@@ -87,6 +92,7 @@
  

[m5-dev] changeset in m5: Stats: Update the O3 fetch stats for SPARC.

2010-11-15 Thread Gabe Black
changeset 634d88f0dbd4 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=634d88f0dbd4
description:
Stats: Update the O3 fetch stats for SPARC.

diffstat:

 tests/long/00.gzip/ref/sparc/linux/o3-timing/stats.txt |  4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diffs (18 lines):

diff -r 03efcdc3421f -r 634d88f0dbd4 
tests/long/00.gzip/ref/sparc/linux/o3-timing/stats.txt
--- a/tests/long/00.gzip/ref/sparc/linux/o3-timing/stats.txtMon Nov 15 
19:37:03 2010 -0800
+++ b/tests/long/00.gzip/ref/sparc/linux/o3-timing/stats.txtMon Nov 15 
19:37:15 2010 -0800
@@ -136,12 +136,12 @@
 system.cpu.fetch.CacheLines 173095521   # 
Number of cache lines fetched
 system.cpu.fetch.Cycles 548231197   # 
Number of cycles fetch has run and was not squashing or blocked
 system.cpu.fetch.IcacheSquashes   1429406   # 
Number of outstanding Icache misses that were squashed
-system.cpu.fetch.Insts 1760522570   # 
Number of instructions fetch has processed
+system.cpu.fetch.Insts 1755969057   # 
Number of instructions fetch has processed
 system.cpu.fetch.SquashCycles 6170035   # 
Number of cycles fetch has spent squashing
 system.cpu.fetch.branchRate  0.087964   # 
Number of branch fetches per cycle
 system.cpu.fetch.icacheStallCycles  173095521   # 
Number of cycles fetch is stalled on an Icache miss
 system.cpu.fetch.predictedBranches   98804348   # 
Number of branches that fetch has predicted taken
-system.cpu.fetch.rate1.463554   # 
Number of inst fetches per cycle
+system.cpu.fetch.rate1.459768   # 
Number of inst fetches per cycle
 system.cpu.fetch.rateDist::samples 1202543536   # 
Number of instructions fetched each cycle (Total)
 system.cpu.fetch.rateDist::mean  1.463999   # 
Number of instructions fetched each cycle (Total)
 system.cpu.fetch.rateDist::stdev 2.699989   # 
Number of instructions fetched each cycle (Total)
___
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev


Re: [m5-dev] changeset in m5: ARM: Add support for a dumb IDE controller

2010-11-15 Thread Gabe Black
 On 11/15/10 12:09, Ali Saidi wrote:
 diffs (119 lines):

 diff -r 859e8bc1cdc2 -r 0731d632db76 configs/common/FSConfig.py
 --- a/configs/common/FSConfig.py  Mon Nov 15 14:04:03 2010 -0600
 +++ b/configs/common/FSConfig.py  Mon Nov 15 14:04:03 2010 -0600
 @@ -209,6 +209,16 @@
  
  self.mem_mode = mem_mode
  
 +#self.cf0 = CowIdeDisk(driveID='master')
 +#self.cf0.childImage(mdesc.disk())
 +#self.cf_ctrl = IdeController(disks=[self.cf0],
 +# pci_func = 0, pci_dev = 0, pci_bus = 0,
 +# io_shift = 1, ctrl_offset = 2, Command = 
 0x1,
 +# BAR0 = 0x1800, BAR0Size = '16B',
 +# BAR1 = 0x18000100, BAR1Size = '1B',
 +# BAR0LegacyIO = True, BAR1LegacyIO = True,)
 +#self.cf_ctrl.pio = self.iobus.port
 +
  if machine_type == RealView_PBX:
  self.realview = RealViewPBX()
  elif machine_type == RealView_EB:

Should these lines have been deleted or uncommented? I assume one or the
other.

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


Re: [m5-dev] changeset in m5: ARM: Add support for a dumb IDE controller

2010-11-15 Thread Ali Saidi

On Nov 15, 2010, at 9:52 PM, Gabe Black wrote:

 On 11/15/10 12:09, Ali Saidi wrote:
 diffs (119 lines):
 
 diff -r 859e8bc1cdc2 -r 0731d632db76 configs/common/FSConfig.py
 --- a/configs/common/FSConfig.py Mon Nov 15 14:04:03 2010 -0600
 +++ b/configs/common/FSConfig.py Mon Nov 15 14:04:03 2010 -0600
 @@ -209,6 +209,16 @@
 
 self.mem_mode = mem_mode
 
 +#self.cf0 = CowIdeDisk(driveID='master')
 +#self.cf0.childImage(mdesc.disk())
 +#self.cf_ctrl = IdeController(disks=[self.cf0],
 +# pci_func = 0, pci_dev = 0, pci_bus = 0,
 +# io_shift = 1, ctrl_offset = 2, Command = 
 0x1,
 +# BAR0 = 0x1800, BAR0Size = '16B',
 +# BAR1 = 0x18000100, BAR1Size = '1B',
 +# BAR0LegacyIO = True, BAR1LegacyIO = True,)
 +#self.cf_ctrl.pio = self.iobus.port
 +
 if machine_type == RealView_PBX:
 self.realview = RealViewPBX()
 elif machine_type == RealView_EB:
 
 Should these lines have been deleted or uncommented? I assume one or the
 other.

It was intentional. I didn't want to enable it yet and adding it effects the 
stats, however I also didn't want to have to figure out the addresses and such 
again. It will get uncommented soon.

Ali




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


Re: [m5-dev] Review Request: ARM: Take advantage of new PCState syntax.

2010-11-15 Thread Nathan Binkert

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



src/arch/arm/isa/operands.isa
http://reviews.m5sim.org/r/312/#comment698

Ok, I thought I commented on this last time.  This is nuts.  You can't have 
this random number here that needs to change whenever you do something.


- Nathan


On 2010-11-15 04:28:11, Gabe Black wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/312/
 ---
 
 (Updated 2010-11-15 04:28:11)
 
 
 Review request for Default.
 
 
 Summary
 ---
 
 ARM: Take advantage of new PCState syntax.
 
 
 Diffs
 -
 
   src/arch/arm/isa/insts/branch.isa f440cdaf1c2d 
   src/arch/arm/isa/insts/data.isa f440cdaf1c2d 
   src/arch/arm/isa/insts/ldr.isa f440cdaf1c2d 
   src/arch/arm/isa/insts/macromem.isa f440cdaf1c2d 
   src/arch/arm/isa/insts/misc.isa f440cdaf1c2d 
   src/arch/arm/isa/operands.isa f440cdaf1c2d 
 
 Diff: http://reviews.m5sim.org/r/312/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Gabe
 


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


Re: [m5-dev] Review Request: imported patch ext/noisa.patch

2010-11-15 Thread Nathan Binkert

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

Ship it!


I can't wait to use it

- Nathan


On 2010-11-15 14:43:46, Ali Saidi wrote:
 
 ---
 This is an automatically generated e-mail. To reply, visit:
 http://reviews.m5sim.org/r/303/
 ---
 
 (Updated 2010-11-15 14:43:46)
 
 
 Review request for Default.
 
 
 Summary
 ---
 
 imported patch ext/noisa.patch
 
 
 Diffs
 -
 
   build_opts/NOISA PRE-CREATION 
   src/arch/noisa/SConsopts PRE-CREATION 
   src/arch/noisa/cpu_dummy.hh PRE-CREATION 
   src/base/SConscript ff2213d13e58 
   src/cpu/SConscript ff2213d13e58 
   src/cpu/nocpu/SConsopts PRE-CREATION 
   src/dev/SConscript ff2213d13e58 
   src/kern/SConscript ff2213d13e58 
   src/mem/SConscript ff2213d13e58 
   src/mem/cache/SConscript ff2213d13e58 
   src/mem/cache/prefetch/SConscript ff2213d13e58 
   src/mem/cache/tags/SConscript ff2213d13e58 
   src/mem/ruby/SConscript ff2213d13e58 
   src/python/swig/pyobject.hh ff2213d13e58 
   src/sim/SConscript ff2213d13e58 
   src/sim/stat_control.cc ff2213d13e58 
   src/unittest/SConscript ff2213d13e58 
 
 Diff: http://reviews.m5sim.org/r/303/diff
 
 
 Testing
 ---
 
 
 Thanks,
 
 Ali
 


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


Re: [m5-dev] Review Request: imported patch ext/noisa.patch

2010-11-15 Thread Ali Saidi
Think I could convince you to get your stats changes in order. :)

Ali

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