Commit Graph

778 Commits

Author SHA1 Message Date
a6c24489f6 Revert "gem5: save/restore moved to Gem5Controller"
This reverts commit d525005990.
2013-05-22 17:38:56 +02:00
dd81913f2c Revert "gem5: The serializeAll(path) method don't have to be invoked on the root object."
This reverts commit 60735f254e.
2013-05-22 17:38:39 +02:00
a2a113c54d Revert "gem5: todo-gem5.txt revised"
This reverts commit 08c44f5d98.
2013-05-22 17:36:43 +02:00
08c44f5d98 gem5: todo-gem5.txt revised
Change-Id: Icce220e5cd15bc396a8c40c93f7df85f30e6f64e
2013-05-22 17:25:48 +02:00
60735f254e gem5: The serializeAll(path) method don't have to be invoked on the root object.
The checkpoint which is produced by this save method is a little bit
different to the checkpoint which is produced by the --take-checkpoint
command. It differs in the save-parameters so_state, funcExeInst, intRegs,
_upc, _nupc, _when. Tests have shown that it probably does not affect the
course of the program execution.

Change-Id: I19b3fc809288224532e0ed6b7910a45115cb1c5d
2013-05-22 15:56:04 +02:00
d525005990 gem5: save/restore moved to Gem5Controller
Change-Id: I0ce72f04a8de88f4f8b6c1f0bba7a9097c82e107
2013-05-22 13:54:55 +02:00
d9ba5e24ad gem5: more info about how to use and how to build
The recent information in how-to-use.txt and how-to-build.txt were
outdated.

Change-Id: I4e6536a0b56370717d6a09f4012862d300526313
2013-05-17 13:29:21 +02:00
f92557c2c2 gem5: codebase patched to compile with ag++
This changes allows us to compile the gem5 simulator with ag++. It
was tested with ag++ v0.8, built Apr 18 2013. Most of the changes
are preprocessor directives like #ifndef __puma which have been
inserted into the gem5 code. Unfortunately, a python script and a
SWIG input file have been patched, too.
Additionally, the CMake file has been updated. A single call to
"make" now invokes the ag++ (instead of the g++) compiler front
end. The new CMake target "gem5-allclean" should be used to clean
the current project when building FailGem5. In addition to cleaning
the Fail build directory, it also invokes "scons -c" in the gem5
build directory; that is, gem5 is cleaned as well.

Change-Id: I20a92f025f34f626b81e30f2c873baeba189f83b
2013-05-16 15:35:28 +02:00
95892e9688 Merge branch 'master' of ssh://vamos.informatik.uni-erlangen.de:29418/fail 2013-05-07 15:06:01 +02:00
515eb9973b Fail* CPUState: set/getRegisterContent() uses "const Register*" as 1st param
The first parameter (Register* reg) is only used as input (const-correctness).

Change-Id: I5a75a9f7378913e491a8a22872f51a385e910af6
2013-05-07 14:48:36 +02:00
72c9ba6363 Added abo-simple-arm experiment code
It is a simple and short experiment that performs single stepping
through the target. It is designed to be used with gem5 (+ ARM).

Change-Id: Id48b2b087a3650bd0298454ff168c0dbdaaae0c8
2013-05-07 14:46:19 +02:00
924b40615d gem5: revisited register implementation
The previous implementation wasn't in a working state because
the register content retrieval was buggy. (For example, RT_FP
does *not* denote a "floating point" register. Instead, it is
the frame pointer!)

Change-Id: I31fd80d374c945adaf35b47958d6437a8e2d48c3
2013-05-07 14:45:54 +02:00
619f62b09f gem5: added getMnemonic() (requires breakpoints)
Change-Id: I5a2862a0ad3c3d506189a6196682e227205ebe09
2013-05-07 14:42:59 +02:00
578e7defd0 gem5: compiles again
Change-Id: Ia95f64953af86003c4be4cbeb01a927d6638f1be
2013-05-07 14:41:52 +02:00
699f14cf0f Merge "gem5: revisited breakpoint implementation" 2013-05-07 13:06:04 +02:00
bc95c8dda5 .mailmap for consistent git shortlog and blame
Change-Id: Ib86719b71ee18f3858e076a7be51274a4362c0e4
2013-04-29 15:34:08 +02:00
20b70df651 efw/JobClient: knock less often when there are no jobs yet
Change-Id: If769b402a7b00ed3aebedd5f4d0954831a0ee905
2013-04-29 15:34:08 +02:00
880e7a81ff comm: ignore SIGPIPE
This prevents client and server from being sent a SIGPIPE (and
terminating) when the other side unexpectedly closes the connection.
It's way easier to handle this condition when checking the write()
return value, than to do anything smart in a SIGPIPE handler.  More
details:
<http://stackoverflow.com/questions/108183/how-to-prevent-sigpipes-or-handle-them-properly>

Change-Id: I1da5bf5ef79c8b7b00ede976e96ed4f1c560049d
2013-04-29 15:32:12 +02:00
091e8dcae0 ecos: baseline assessment integrated into main experiment
Change-Id: Iaf2a31c917b6ddd50568e5fb784ab8457193ee7d
2013-04-29 14:15:53 +02:00
403886e541 ecos: minor changes, cleanup
- Count experiments, not jobs
 - Debug output

Change-Id: Ide5e1219cdcc8112d1a0d4e7367beca2dd5821ef
2013-04-29 14:15:51 +02:00
c0b36f6236 ecos: use new timer iface to record benchmark runtime
... instead of the previous TimerListener workaround.

Change-Id: I3e712540e93b668301f50ecf4f5a5760e0a8fdb3
2013-04-29 14:15:49 +02:00
0887a53d1d ecos: campaign rewrite for MySQL data store
We're not yet using the common DatabaseCampaign as it doesn't allow
for additional experiment parameters (such as "variant" and
"benchmark") yet.  TODO: Integrate changes in DatabaseCampaign in a
generic way and use it.

Change-Id: I45480003be433654aea8d3a417fbfa66be31155b
2013-04-29 14:15:44 +02:00
392a6e6eb8 core/sal: correct timer ticks/sec calculation
Change-Id: I0971fe8a21c9ed3415d98b5e6387299beb3121e6
2013-04-29 14:15:36 +02:00
33c0584dda gem5: revisited breakpoint implementation
Now, the gem5 implementation equals the Bochs variant. Note that it's
*not* necessary to enable CONFIG_EVENTS_BREAKPOINTS_RANGE in order to
use range breakpoints.
In addition, gem5 distinguishes between macro- and microops. With the
new implementation, onBreakpoint() is only called when a macroop
changes.

Change-Id: Ib86d1802fc70c20d22ca1a1ece0e8d1221b2e7db
2013-04-29 13:23:58 +02:00
b720985f62 Merge changes I7607911c,I6241ea2d,Ib94d6370
* changes:
  experiments/kesorefs: convert to DatabaseCampaign
  ElfReader: Add support for getting a section iterator
  Typos in BochsController.hpp fixed
2013-04-28 12:55:14 +02:00
923ba362fa experiments/kesorefs: convert to DatabaseCampaign
Change-Id: I7607911c28ffb2427681db241ac721f1ae2c002a
2013-04-28 12:52:17 +02:00
2753a165ba ElfReader: Add support for getting a section iterator
Change-Id: I6241ea2de9da1a1e709fae6374df4fc06ef26aaa
2013-04-28 12:51:59 +02:00
11d9690a67 Typos in BochsController.hpp fixed
Change-Id: Ib94d63707fdeb3e0dc77cccd3ffde04df25329c2
2013-04-28 12:51:33 +02:00
628c1b6997 Added abo-simple-arm experiment code
It is a simple and short experiment that performs single stepping
through the target. It is designed to be used with gem5 (+ ARM).

Change-Id: Id48b2b087a3650bd0298454ff168c0dbdaaae0c8
2013-04-24 14:26:11 +02:00
a43da33fd0 Revisited register implementation in gem5
Change-Id: I31fd80d374c945adaf35b47958d6437a8e2d48c3
2013-04-24 14:16:25 +02:00
896d6cc4c1 gem5: added getMnemonic() (requires breakpoints)
Change-Id: I5a2862a0ad3c3d506189a6196682e227205ebe09
2013-04-24 14:14:15 +02:00
1c70ed2334 Make it compile again (with gem5 + ARM)
Change-Id: Ia95f64953af86003c4be4cbeb01a927d6638f1be
2013-04-24 13:19:40 +02:00
a3cafbd78b Revisited breakpoint implementation of gem5.
Now, the gem5 implementation equals the Bochs variant. Note that its
necessary to enable CONFIG_EVENTS_BREAKPOINTS_RANGE in order to use
range breakpoints.
In addition, gem5 distinguishes between macro- and microops. With the
new implemenation, onBreakpoint is only called when a macroop changes.

Change-Id: Ib86d1802fc70c20d22ca1a1ece0e8d1221b2e7db
2013-04-24 13:06:44 +02:00
f364024cba Typos in BochsController.hpp fixed
Change-Id: Ib94d63707fdeb3e0dc77cccd3ffde04df25329c2
2013-04-23 14:34:27 +02:00
2910e8462e Merge "Removed OVP-related (source) files/code (backend discarded)." 2013-04-23 14:27:02 +02:00
e68116e425 Merge changes If331ad7a,I6241ea2d,Iba4f73dc,I7a49e8e9,Ifae805ae
* changes:
  bochs: fix parsing ips values > 2^31
  tools/prune-trace: various improvements
  tools/import-trace: sanity checks
  tools/import-trace: import timing information + various additions
  cosmetics
2013-04-22 14:32:41 +02:00
5feebab5ab bochs: fix parsing ips values > 2^31
Change-Id: If331ad7aeedf04c1a62a9bca4bbe74021b5fccd5
2013-04-22 14:24:50 +02:00
56bfa6c693 tools/prune-trace: various improvements
- Variants/benchmarks can now be selected with wildcards
  (--variant/--benchmark), and can be excluded from pruning
  (--variant-exclude/--benchmark-exclude).
- The database clearing step can be skipped with --no-delete to
  avoid deadlocks with concurrent DB accesses.
- Internals:
  * injection_instr / injection_instr_absolute moves from
    fspgroup to fsppilot.  fsppilot now contains all information we
    need for running FI experiments.
    TODO: generic campaign needs to be modified, too.
  * Force MySQL to use an efficient join order (STRAIGHT_JOIN).

Change-Id: I6241ea2de9da1a1e709fae6374df4fc06ef262a0
2013-04-22 14:24:50 +02:00
79363aec21 tools/import-trace: sanity checks
These can be enabled if something looks fishy.

Change-Id: Iba4f73dc0a70ec4e548456edb36e21fecbaad410
2013-04-22 14:24:50 +02:00
9273872d43 tools/import-trace: import timing information + various additions
- Import timing information from traces that were recorded with timing.
- Allow restricting import to a memory map ("vertical" restriction).
- Proper fault-space right-margin handling.
- Cleanups, data-type usage, etc.

Change-Id: I7a49e8e9e49894c458e884bfc234f36b9ba8b130
2013-04-22 14:24:50 +02:00
0f16f18d75 cosmetics
Change-Id: Ifae805ae1e2dac95324e054af09a7b70f5d5b60c
2013-04-22 14:24:02 +02:00
872bbcd903 todo-gem5.txt revised 2013-04-18 12:38:53 +02:00
03bcf7bfc8 Removed OVP-related (source) files/code (backend discarded).
Change-Id: Ibf8065d9fe760640e5744896b764f9ebb6d2fa69
2013-04-10 15:16:46 +02:00
2d45a2c52c ecos: use MemoryMap materialization instead of own code
Change-Id: I8615a066c53e1d6a02c78bce3199fa1f73edfda9
2013-04-10 13:01:04 +02:00
4d03b7ce5c core/util: MemoryMap learns to materialize in files
Change-Id: I003168d3718491524db91b9f7d855d6b3428961c
2013-04-10 13:01:03 +02:00
467ad88577 dump-trace: dump timing information
TODO: Showing timing or extended trace information should be configurable
with a commandline switch later.

Change-Id: I72ac95ddd1d54dfef87f212ec5afa30b2ed9a6ad
2013-04-10 13:01:03 +02:00
e5fe9dd525 core/sal: interface for backend-specific notion of time
This adds an interface for a backend-specific notion of time, e.g. CPU
cycles since simulator start, and a concrete implementation for the
Bochs backend.  This is needed to record CPU idle times (e.g., HLT
instruction), and for target backends capable of more timing-accurate
execution.

This change also modifies the tracing plugin to add the time to all
trace events.

Change-Id: I93ac1d54c07f32b0b8f84f333417741d8e9c8288
2013-04-10 13:00:49 +02:00
6b5728ece1 Merge "gem5 build system improved" 2013-04-09 14:16:12 +02:00
d7a3a28431 ecos: split valid mem access range
When eCos is built as a multiboot binary, some of its data structures
are still at very low (<<1M) addresses, but the rest moves to
addresses >1M.  This change makes sure our invalid mem access
detection is not overly generous.

Change-Id: If8265a407b3706a4ff71562b316e05aa22255f62
2013-04-09 13:16:13 +02:00
08febe5819 gem5 build system improved
Encapsulated gem5-specific code into wrapper functions to separate the
build process (Fail: CMake, gem5: scons). Added some gem5-related FIXMEs.

Another CMake related FIXME added. +some cosmetics.

Change-Id: Id84b480127b1f13aed6a0ee97f3583f410d531c5
2013-04-08 17:57:06 +02:00