m5.c revision 278
1278Sbinkertn@umich.edu/*
2278Sbinkertn@umich.edu * Copyright (c) 2003 The Regents of The University of Michigan
3278Sbinkertn@umich.edu * All rights reserved.
4278Sbinkertn@umich.edu *
5278Sbinkertn@umich.edu * Redistribution and use in source and binary forms, with or without
6278Sbinkertn@umich.edu * modification, are permitted provided that the following conditions are
7278Sbinkertn@umich.edu * met: redistributions of source code must retain the above copyright
8278Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer;
9278Sbinkertn@umich.edu * redistributions in binary form must reproduce the above copyright
10278Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer in the
11278Sbinkertn@umich.edu * documentation and/or other materials provided with the distribution;
12278Sbinkertn@umich.edu * neither the name of the copyright holders nor the names of its
13278Sbinkertn@umich.edu * contributors may be used to endorse or promote products derived from
14278Sbinkertn@umich.edu * this software without specific prior written permission.
15278Sbinkertn@umich.edu *
16278Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17278Sbinkertn@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18278Sbinkertn@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19278Sbinkertn@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20278Sbinkertn@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21278Sbinkertn@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22278Sbinkertn@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23278Sbinkertn@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24278Sbinkertn@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25278Sbinkertn@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26278Sbinkertn@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27278Sbinkertn@umich.edu */
28278Sbinkertn@umich.edu
29275Sbinkertn@umich.edu#include <c_asm.h>
30275Sbinkertn@umich.edu
31275Sbinkertn@umich.edu#include <libgen.h>
32275Sbinkertn@umich.edu#include <stdio.h>
33275Sbinkertn@umich.edu#include <stdlib.h>
34275Sbinkertn@umich.edu#include <string.h>
35275Sbinkertn@umich.edu
36275Sbinkertn@umich.edu#include "m5op.h"
37275Sbinkertn@umich.edu
38275Sbinkertn@umich.educhar *progname;
39275Sbinkertn@umich.edu
40275Sbinkertn@umich.eduvoid
41275Sbinkertn@umich.eduusage()
42275Sbinkertn@umich.edu{
43275Sbinkertn@umich.edu    char *name = basename(progname);
44275Sbinkertn@umich.edu    printf("usage: %s ivlb <interval>\n"
45275Sbinkertn@umich.edu           "       %s ivle <interval>\n"
46275Sbinkertn@umich.edu           "       %s initparam\n"
47275Sbinkertn@umich.edu           "       %s sw99param\n"
48275Sbinkertn@umich.edu           "       %s resetstats\n"
49275Sbinkertn@umich.edu           "       %s exit\n", name, name, name, name, name, name);
50275Sbinkertn@umich.edu    exit(1);
51275Sbinkertn@umich.edu}
52275Sbinkertn@umich.edu
53275Sbinkertn@umich.eduint
54275Sbinkertn@umich.edumain(int argc, char *argv[])
55275Sbinkertn@umich.edu{
56275Sbinkertn@umich.edu    int start;
57275Sbinkertn@umich.edu    int interval;
58275Sbinkertn@umich.edu    unsigned long long param;
59275Sbinkertn@umich.edu
60275Sbinkertn@umich.edu    progname = argv[0];
61275Sbinkertn@umich.edu    if (argc < 2)
62275Sbinkertn@umich.edu        usage();
63275Sbinkertn@umich.edu
64275Sbinkertn@umich.edu    if (strncmp(argv[1], "ivlb", 5) == 0) {
65275Sbinkertn@umich.edu        if (argc != 3) usage();
66275Sbinkertn@umich.edu        ivlb((unsigned long)atoi(argv[2]));
67275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "ivle", 5) == 0) {
68275Sbinkertn@umich.edu        if (argc != 3) usage();
69275Sbinkertn@umich.edu        ivle((unsigned long)atoi(argv[2]));
70275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "exit", 5) == 0) {
71275Sbinkertn@umich.edu        if (argc != 2) usage();
72275Sbinkertn@umich.edu        m5exit();
73275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "initparam", 10) == 0) {
74275Sbinkertn@umich.edu        if (argc != 2) usage();
75275Sbinkertn@umich.edu        printf("%d", initparam());
76275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "sw99param", 10) == 0) {
77275Sbinkertn@umich.edu        if (argc != 2) usage();
78275Sbinkertn@umich.edu
79275Sbinkertn@umich.edu        param = initparam();
80275Sbinkertn@umich.edu        // run-time, rampup-time, rampdown-time, warmup-time, connections
81275Sbinkertn@umich.edu        printf("%d %d %d %d %d", (param >> 48) & 0xfff,
82275Sbinkertn@umich.edu               (param >> 36) & 0xfff, (param >> 24) & 0xfff,
83275Sbinkertn@umich.edu               (param >> 12) & 0xfff, (param >> 0) & 0xfff);
84275Sbinkertn@umich.edu    } else if (strncmp(argv[1], "resetstats", 11) == 0) {
85275Sbinkertn@umich.edu        if (argc != 2) usage();
86275Sbinkertn@umich.edu        resetstats();
87275Sbinkertn@umich.edu    }
88275Sbinkertn@umich.edu
89275Sbinkertn@umich.edu    return 0;
90275Sbinkertn@umich.edu}
91