⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptrace.h

📁 RISC处理器仿真分析程序。可以用于研究通用RISC处理器的指令和架构设计。在linux下编译
💻 H
字号:
/* * ptrace.h - pipeline tracing definitions and interfaces * * This file is a part of the SimpleScalar tool suite written by * Todd M. Austin as a part of the Multiscalar Research Project. *  * The tool suite is currently maintained by Doug Burger and Todd M. Austin. *  * Copyright (C) 1994, 1995, 1996, 1997 by Todd M. Austin * * This source file is distributed "as is" in the hope that it will be * useful.  The tool set comes with no warranty, and no author or * distributor accepts any responsibility for the consequences of its * use.  *  * Everyone is granted permission to copy, modify and redistribute * this tool set under the following conditions: *  *    This source code is distributed for non-commercial use only.  *    Please contact the maintainer for restrictions applying to  *    commercial use. * *    Permission is granted to anyone to make or distribute copies *    of this source code, either as received or modified, in any *    medium, provided that all copyright notices, permission and *    nonwarranty notices are preserved, and that the distributor *    grants the recipient permission for further redistribution as *    permitted by this document. * *    Permission is granted to distribute this file in compiled *    or executable form under the same conditions that apply for *    source code, provided that either: * *    A. it is accompanied by the corresponding machine-readable *       source code, *    B. it is accompanied by a written offer, with no time limit, *       to give anyone a machine-readable copy of the corresponding *       source code in return for reimbursement of the cost of *       distribution.  This written offer must permit verbatim *       duplication by anyone, or *    C. it is distributed by someone who received only the *       executable form, and is accompanied by a copy of the *       written offer of source code that they received concurrently. * * In other words, you are welcome to use, share and improve this * source file.  You are forbidden to forbid anyone else to use, share * and improve what you give them. * * INTERNET: dburger@cs.wisc.edu * US Mail:  1210 W. Dayton Street, Madison, WI 53706 * * $Id: ptrace.h,v 1.1 1997/03/11 01:32:28 taustin Exp taustin $ * * $Log: ptrace.h,v $ * Revision 1.1  1997/03/11  01:32:28  taustin * Initial revision * * */#ifndef PTRACE_H#define PTRACE_H#include "ss.h"#include "range.h"/* * pipeline events: * *	+ <iseq> <pc> <addr> <inst>	- new instruction def *	- <iseq>			- instruction squashed or retired *	@ <cycle>			- new cycle def *	* <iseq> <stage> <events>	- instruction stage transition * *//*	[IF]   [DA]   [EX]   [WB]   [CT]         aa     dd     jj     ll     nn         bb     ee     kk     mm     oo         cc                          pp *//* pipeline stages */#define PST_IFETCH		"IF"#define PST_DISPATCH		"DA"#define PST_EXECUTE		"EX"#define PST_WRITEBACK		"WB"#define PST_COMMIT		"CT"/* pipeline events */#define PEV_CACHEMISS		0x00000001	/* I/D-cache miss */#define PEV_TLBMISS		0x00000002	/* I/D-tlb miss */#define PEV_MPOCCURED		0x00000004	/* mis-pred branch occurred */#define PEV_MPDETECT		0x00000008	/* mis-pred branch detected */#define PEV_AGEN		0x00000010	/* address generation *//* pipetrace file */extern FILE *ptrace_outfd;/* pipetracing is active */extern int ptrace_active;/* pipetracing range */extern struct range_range_t ptrace_range;/* one-shot switch for pipetracing */extern int ptrace_oneshot;/* open pipeline trace */voidptrace_open(char *range,		/* trace range */	    char *fname);		/* output filename *//* close pipeline trace */voidptrace_close(void);/* NOTE: pipetracing is a one-shot switch, since turning on a trace more than   once will mess up the pipetrace viewer */#define ptrace_check_active(PC, ICNT, CYCLE)				\  ((ptrace_outfd != NULL						\    && !range_cmp_range1(&ptrace_range, (PC), (ICNT), (CYCLE)))		\   ? (!ptrace_oneshot ? (ptrace_active = ptrace_oneshot = TRUE) : FALSE)\   : (ptrace_active = FALSE))/* main interfaces, with fast checks */#define ptrace_newinst(A,B,C,D)						\  if (ptrace_active) __ptrace_newinst((A),(B),(C),(D))#define ptrace_newuop(A,B,C,D)						\  if (ptrace_active) __ptrace_newuop((A),(B),(C),(D))#define ptrace_endinst(A)						\  if (ptrace_active) __ptrace_endinst((A))#define ptrace_newcycle(A)						\  if (ptrace_active) __ptrace_newcycle((A))#define ptrace_newstage(A,B,C)						\  if (ptrace_active) __ptrace_newstage((A),(B),(C))#define ptrace_active(A,I,C)						\  (ptrace_outfd != NULL	&& !range_cmp_range(&ptrace_range, (A), (I), (C)))/* declare a new instruction */void__ptrace_newinst(unsigned int iseq,	/* instruction sequence number */		 SS_INST_TYPE inst,	/* new instruction */		 SS_ADDR_TYPE pc,	/* program counter of instruction */		 SS_ADDR_TYPE addr);	/* address referenced, if load/store *//* declare a new uop */void__ptrace_newuop(unsigned int iseq,	/* instruction sequence number */		char *uop_desc,		/* new uop description */		SS_ADDR_TYPE pc,	/* program counter of instruction */		SS_ADDR_TYPE addr);	/* address referenced, if load/store *//* declare instruction retirement or squash */void__ptrace_endinst(unsigned int iseq);	/* instruction sequence number *//* declare a new cycle */void__ptrace_newcycle(SS_TIME_TYPE cycle);	/* new cycle *//* indicate instruction transition to a new pipeline stage */void__ptrace_newstage(unsigned int iseq,	/* instruction sequence number */		  char *pstage,		/* pipeline stage entered */		  unsigned int pevents);/* pipeline events while in stage */#endif /* PTRACE_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -