From 807168a1de1b101622d084c5fe160cf41ff3f59d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Llu=C3=ADs=20Vilanova?= Date: Tue, 8 Jan 2013 08:54:12 -0500 Subject: util: add m5_fail op. Used as a command in full-system scripts helps the user ensure the benchmarks have finished successfully. For example, one can use: /path/to/benchmark args || /sbin/m5 fail 1 and thus ensure gem5 will exit with an error if the benchmark fails. --- util/m5/m5.c | 10 ++++++++++ util/m5/m5op.h | 1 + util/m5/m5op_x86.S | 1 + util/m5/m5ops.h | 1 + 4 files changed, 13 insertions(+) (limited to 'util') diff --git a/util/m5/m5.c b/util/m5/m5.c index e9fe8f1f3..021816ce3 100644 --- a/util/m5/m5.c +++ b/util/m5/m5.c @@ -134,6 +134,15 @@ do_exit(int argc, char *argv[]) m5_exit(ints[0]); } +void +do_fail(int argc, char *argv[]) +{ + if (argc < 1 || argc > 2) + usage(); + + m5_fail((argc > 1) ? strtoul(argv[1], NULL, 0) : 0, strtoul(argv[0], NULL, 0)); +} + void do_reset_stats(int argc, char *argv[]) { @@ -273,6 +282,7 @@ struct MainFunc struct MainFunc mainfuncs[] = { { "exit", do_exit, "[delay]" }, + { "fail", do_fail, " [delay]" }, { "resetstats", do_reset_stats, "[delay [period]]" }, { "dumpstats", do_dump_stats, "[delay [period]]" }, { "dumpresetstats", do_dump_reset_stats, "[delay [period]]" }, diff --git a/util/m5/m5op.h b/util/m5/m5op.h index 9e693258e..9df9a7429 100644 --- a/util/m5/m5op.h +++ b/util/m5/m5op.h @@ -47,6 +47,7 @@ uint64_t rpns(); void wakeCPU(uint64_t cpuid); void m5_exit(uint64_t ns_delay); +void m5_fail(uint64_t ns_delay, uint64_t code); uint64_t m5_initparam(void); void m5_checkpoint(uint64_t ns_delay, uint64_t ns_period); void m5_reset_stats(uint64_t ns_delay, uint64_t ns_period); diff --git a/util/m5/m5op_x86.S b/util/m5/m5op_x86.S index 93eacc24d..2c25785e6 100644 --- a/util/m5/m5op_x86.S +++ b/util/m5/m5op_x86.S @@ -48,6 +48,7 @@ TWO_BYTE_OP(quiesceCycle, quiescecycle_func) TWO_BYTE_OP(quiesceTime, quiescetime_func) TWO_BYTE_OP(rpns, rpns_func) TWO_BYTE_OP(m5_exit, exit_func) +TWO_BYTE_OP(m5_fail, fail_func) TWO_BYTE_OP(m5_initparam, initparam_func) TWO_BYTE_OP(m5_loadsymbol, loadsymbol_func) TWO_BYTE_OP(m5_reset_stats, resetstats_func) diff --git a/util/m5/m5ops.h b/util/m5/m5ops.h index f08524014..8ff1ac42f 100644 --- a/util/m5/m5ops.h +++ b/util/m5/m5ops.h @@ -40,6 +40,7 @@ #define deprecated2_func 0x11 // obsolete ivle #define deprecated3_func 0x20 // deprecated exit function #define exit_func 0x21 +#define fail_func 0x22 #define initparam_func 0x30 #define loadsymbol_func 0x31 #define resetstats_func 0x40 -- cgit v1.2.3