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