diff options
author | Nathan Binkert <binkertn@umich.edu> | 2003-11-01 13:20:44 -0500 |
---|---|---|
committer | Nathan Binkert <binkertn@umich.edu> | 2003-11-01 13:20:44 -0500 |
commit | 15613161c28591ca1a40d019a1568f01d68d5743 (patch) | |
tree | d8295505ea60b4138349f9ab026a8b26fd491b99 /util/m5/m5.c | |
parent | 166def1f5663bda1766b003fab4c46bc905fdb8d (diff) | |
download | gem5-15613161c28591ca1a40d019a1568f01d68d5743.tar.xz |
Commit a command for use inside a simulated system for communicating
with the simulator. This program is generally compiled as the name
m5 and installed in /usr/local/bin
This command uses opcodes that are invalid on a normal system, so
don't expect it to do anything on a real system.
--HG--
extra : convert_revision : fcbae99d4b0d38ff4a9950f1ab53923baa1f667a
Diffstat (limited to 'util/m5/m5.c')
-rw-r--r-- | util/m5/m5.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/util/m5/m5.c b/util/m5/m5.c new file mode 100644 index 000000000..4bd515c5d --- /dev/null +++ b/util/m5/m5.c @@ -0,0 +1,62 @@ +#include <c_asm.h> + +#include <libgen.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "m5op.h" + +char *progname; + +void +usage() +{ + char *name = basename(progname); + printf("usage: %s ivlb <interval>\n" + " %s ivle <interval>\n" + " %s initparam\n" + " %s sw99param\n" + " %s resetstats\n" + " %s exit\n", name, name, name, name, name, name); + exit(1); +} + +int +main(int argc, char *argv[]) +{ + int start; + int interval; + unsigned long long param; + + progname = argv[0]; + if (argc < 2) + usage(); + + if (strncmp(argv[1], "ivlb", 5) == 0) { + if (argc != 3) usage(); + ivlb((unsigned long)atoi(argv[2])); + } else if (strncmp(argv[1], "ivle", 5) == 0) { + if (argc != 3) usage(); + ivle((unsigned long)atoi(argv[2])); + } else if (strncmp(argv[1], "exit", 5) == 0) { + if (argc != 2) usage(); + m5exit(); + } else if (strncmp(argv[1], "initparam", 10) == 0) { + if (argc != 2) usage(); + printf("%d", initparam()); + } else if (strncmp(argv[1], "sw99param", 10) == 0) { + if (argc != 2) usage(); + + param = initparam(); + // run-time, rampup-time, rampdown-time, warmup-time, connections + printf("%d %d %d %d %d", (param >> 48) & 0xfff, + (param >> 36) & 0xfff, (param >> 24) & 0xfff, + (param >> 12) & 0xfff, (param >> 0) & 0xfff); + } else if (strncmp(argv[1], "resetstats", 11) == 0) { + if (argc != 2) usage(); + resetstats(); + } + + return 0; +} |