m5.c revision 275
1275Sbinkertn@umich.edu#include <c_asm.h>
2275Sbinkertn@umich.edu
3275Sbinkertn@umich.edu#include <libgen.h>
4275Sbinkertn@umich.edu#include <stdio.h>
5275Sbinkertn@umich.edu#include <stdlib.h>
6275Sbinkertn@umich.edu#include <string.h>
7275Sbinkertn@umich.edu
8275Sbinkertn@umich.edu#include "m5op.h"
9275Sbinkertn@umich.edu
10275Sbinkertn@umich.educhar *progname;
11275Sbinkertn@umich.edu
12275Sbinkertn@umich.eduvoid
13275Sbinkertn@umich.eduusage()
14275Sbinkertn@umich.edu{
15275Sbinkertn@umich.edu    char *name = basename(progname);
16275Sbinkertn@umich.edu    printf("usage: %s ivlb <interval>\n"
17275Sbinkertn@umich.edu           "       %s ivle <interval>\n"
18275Sbinkertn@umich.edu           "       %s initparam\n"
19275Sbinkertn@umich.edu           "       %s sw99param\n"
20275Sbinkertn@umich.edu           "       %s resetstats\n"
21275Sbinkertn@umich.edu           "       %s exit\n", name, name, name, name, name, name);
22275Sbinkertn@umich.edu    exit(1);
23275Sbinkertn@umich.edu}
24275Sbinkertn@umich.edu
25275Sbinkertn@umich.eduint
26275Sbinkertn@umich.edumain(int argc, char *argv[])
27275Sbinkertn@umich.edu{
28275Sbinkertn@umich.edu    int start;
29275Sbinkertn@umich.edu    int interval;
30275Sbinkertn@umich.edu    unsigned long long param;
31275Sbinkertn@umich.edu
32275Sbinkertn@umich.edu    progname = argv[0];
33275Sbinkertn@umich.edu    if (argc < 2)
34275Sbinkertn@umich.edu        usage();
35275Sbinkertn@umich.edu
36275Sbinkertn@umich.edu    if (strncmp(argv[1], "ivlb", 5) == 0) {
37275Sbinkertn@umich.edu        if (argc != 3) usage();
38275Sbinkertn@umich.edu        ivlb((unsigned long)atoi(argv[2]));
39275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "ivle", 5) == 0) {
40275Sbinkertn@umich.edu        if (argc != 3) usage();
41275Sbinkertn@umich.edu        ivle((unsigned long)atoi(argv[2]));
42275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "exit", 5) == 0) {
43275Sbinkertn@umich.edu        if (argc != 2) usage();
44275Sbinkertn@umich.edu        m5exit();
45275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "initparam", 10) == 0) {
46275Sbinkertn@umich.edu        if (argc != 2) usage();
47275Sbinkertn@umich.edu        printf("%d", initparam());
48275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "sw99param", 10) == 0) {
49275Sbinkertn@umich.edu        if (argc != 2) usage();
50275Sbinkertn@umich.edu
51275Sbinkertn@umich.edu        param = initparam();
52275Sbinkertn@umich.edu        // run-time, rampup-time, rampdown-time, warmup-time, connections
53275Sbinkertn@umich.edu        printf("%d %d %d %d %d", (param >> 48) & 0xfff,
54275Sbinkertn@umich.edu               (param >> 36) & 0xfff, (param >> 24) & 0xfff,
55275Sbinkertn@umich.edu               (param >> 12) & 0xfff, (param >> 0) & 0xfff);
56275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "resetstats", 11) == 0) {
57275Sbinkertn@umich.edu        if (argc != 2) usage();
58275Sbinkertn@umich.edu        resetstats();
59275Sbinkertn@umich.edu    }
60275Sbinkertn@umich.edu
61275Sbinkertn@umich.edu    return 0;
62275Sbinkertn@umich.edu}
63