OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_67/] [or1ksim/] [profiler.h] - Diff between revs 1460 and 1765

Only display areas with differences | Details | Blame | View Log

Rev 1460 Rev 1765
/* profiler.h -- profiling utility
/* profiler.h -- profiling utility
   Copyright (C) 2001 Marko Mlinar, markom@opencores.org
   Copyright (C) 2001 Marko Mlinar, markom@opencores.org
 
 
This file is part of OpenRISC 1000 Architectural Simulator.
This file is part of OpenRISC 1000 Architectural Simulator.
 
 
This program is free software; you can redistribute it and/or modify
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
(at your option) any later version.
 
 
This program is distributed in the hope that it will be useful,
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
GNU General Public License for more details.
 
 
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
 
 
/* Command line utility, that displays profiling information, generated
/* Command line utility, that displays profiling information, generated
   by or1ksim. (use --profile option at command line, when running or1ksim.  */
   by or1ksim. (use --profile option at command line, when running or1ksim.  */
 
 
#ifndef __PROFILER_H
#ifndef __PROFILER_H
#define __PROFILER_H
#define __PROFILER_H
 
 
#define MAX_STACK 1024
#define MAX_STACK 1024
#define MAX_FUNCS 1024
#define MAX_FUNCS 1024
 
 
#define PROF_CUMULATIVE 0x01
#define PROF_CUMULATIVE 0x01
#define PROF_QUIET      0x02
#define PROF_QUIET      0x02
 
 
struct stack_struct {
struct stack_struct {
  /* Function address */
  /* Function address */
  unsigned int addr;
  unsigned int addr;
 
 
  /* Cycles of function start; cycles of subfunctions are added later */
  /* Cycles of function start; cycles of subfunctions are added later */
  unsigned int cycles;
  unsigned int cycles;
 
 
  /* Return address */
  /* Return address */
  unsigned int raddr;
  unsigned int raddr;
 
 
  /* Name of the function */
  /* Name of the function */
  char name[33];
  char name[33];
};
};
 
 
struct func_struct {
struct func_struct {
  /* Start address of function */
  /* Start address of function */
  unsigned int addr;
  unsigned int addr;
 
 
  /* Name of the function */
  /* Name of the function */
  char name[33];
  char name[33];
 
 
  /* Total cycles spent in function */
  /* Total cycles spent in function */
  long cum_cycles;
  long cum_cycles;
 
 
  /* Calls to this function */
  /* Calls to this function */
  long calls;
  long calls;
};
};
 
 
extern struct func_struct prof_func[MAX_FUNCS];
extern struct func_struct prof_func[MAX_FUNCS];
 
 
/* Total number of functions */
/* Total number of functions */
extern int prof_nfuncs;
extern int prof_nfuncs;
extern int prof_cycles;
extern int prof_cycles;
 
 
/* Print out command line help */
/* Print out command line help */
void prof_help ();
void prof_help ();
 
 
/* Acquire data from profiler file */
/* Acquire data from profiler file */
int prof_acquire (char *fprofname);
int prof_acquire (char *fprofname);
 
 
/* Print out profiling data */
/* Print out profiling data */
void prof_print ();
void prof_print ();
 
 
/* Set options */
/* Set options */
void prof_set (int _quiet, int _cumulative);
void prof_set (int _quiet, int _cumulative);
 
 
int main_profiler (int argc, char *argv[]);
int main_profiler (int argc, char *argv[]);
#endif /* not __PROFILER_H */
#endif /* not __PROFILER_H */
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.