aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@eecs.berkeley.edu>2013-10-28 20:37:39 -0700
committerAndrew Waterman <waterman@eecs.berkeley.edu>2013-10-28 20:38:57 -0700
commitd5204838b7a09225047ba3eaf707f1db9207cbe3 (patch)
tree52cb2662758ef678155c4430e9cd412305859f25
parent1bcda9195b55d23fe373b23ae38884fd7a4ecef8 (diff)
downloadspike-d5204838b7a09225047ba3eaf707f1db9207cbe3.zip
spike-d5204838b7a09225047ba3eaf707f1db9207cbe3.tar.gz
spike-d5204838b7a09225047ba3eaf707f1db9207cbe3.tar.bz2
Pass target machine's return code back to OS
-rw-r--r--riscv/sim.cc3
-rw-r--r--riscv/sim.h2
-rw-r--r--riscv/spike.cc2
3 files changed, 4 insertions, 3 deletions
diff --git a/riscv/sim.cc b/riscv/sim.cc
index 4d61555..c800e87 100644
--- a/riscv/sim.cc
+++ b/riscv/sim.cc
@@ -72,7 +72,7 @@ reg_t sim_t::get_scr(int which)
}
}
-void sim_t::run()
+int sim_t::run()
{
while (htif->tick())
{
@@ -81,6 +81,7 @@ void sim_t::run()
else
step(INTERLEAVE);
}
+ return htif->exit_code();
}
void sim_t::step(size_t n)
diff --git a/riscv/sim.h b/riscv/sim.h
index e827087..34ed6e8 100644
--- a/riscv/sim.h
+++ b/riscv/sim.h
@@ -19,7 +19,7 @@ public:
~sim_t();
// run the simulation to completion
- void run();
+ int run();
bool running();
void stop();
void set_debug(bool value);
diff --git a/riscv/spike.cc b/riscv/spike.cc
index fb2b7da..da564b5 100644
--- a/riscv/spike.cc
+++ b/riscv/spike.cc
@@ -68,5 +68,5 @@ int main(int argc, char** argv)
}
s.set_debug(debug);
- s.run();
+ return s.run();
}