00001 /* 00002 * regs.h - architected register state interfaces 00003 * 00004 * This file is a part of the SimpleScalar tool suite written by 00005 * Todd M. Austin as a part of the Multiscalar Research Project. 00006 * 00007 * The tool suite is currently maintained by Doug Burger and Todd M. Austin. 00008 * 00009 * Copyright (C) 1994, 1995, 1996, 1997, 1998 by Todd M. Austin 00010 * 00011 * This source file is distributed "as is" in the hope that it will be 00012 * useful. The tool set comes with no warranty, and no author or 00013 * distributor accepts any responsibility for the consequences of its 00014 * use. 00015 * 00016 * Everyone is granted permission to copy, modify and redistribute 00017 * this tool set under the following conditions: 00018 * 00019 * This source code is distributed for non-commercial use only. 00020 * Please contact the maintainer for restrictions applying to 00021 * commercial use. 00022 * 00023 * Permission is granted to anyone to make or distribute copies 00024 * of this source code, either as received or modified, in any 00025 * medium, provided that all copyright notices, permission and 00026 * nonwarranty notices are preserved, and that the distributor 00027 * grants the recipient permission for further redistribution as 00028 * permitted by this document. 00029 * 00030 * Permission is granted to distribute this file in compiled 00031 * or executable form under the same conditions that apply for 00032 * source code, provided that either: 00033 * 00034 * A. it is accompanied by the corresponding machine-readable 00035 * source code, 00036 * B. it is accompanied by a written offer, with no time limit, 00037 * to give anyone a machine-readable copy of the corresponding 00038 * source code in return for reimbursement of the cost of 00039 * distribution. This written offer must permit verbatim 00040 * duplication by anyone, or 00041 * C. it is distributed by someone who received only the 00042 * executable form, and is accompanied by a copy of the 00043 * written offer of source code that they received concurrently. 00044 * 00045 * In other words, you are welcome to use, share and improve this 00046 * source file. You are forbidden to forbid anyone else to use, share 00047 * and improve what you give them. 00048 * 00049 * INTERNET: dburger@cs.wisc.edu 00050 * US Mail: 1210 W. Dayton Street, Madison, WI 53706 00051 * 00052 * 00053 */ 00054 00055 #ifndef REGS_H 00056 #define REGS_H 00057 00058 #include "host.h" 00059 #include "misc.h" 00060 #include "ppcMachine.h" 00061 //#include "sst/boost.h" 00062 00063 /* 00064 * This module implements the PowerPC architected register state, which 00065 * includes integer and floating point registers and miscellaneous registers. 00066 * The architected register state is as follows: 00067 * 00068 */ 00069 00070 /* This is the structure that describes the register set for the PowerPC. 00071 To see why these registers are here refer to the PowerPC users manual 00072 which describes the registers that are seen in the user mode*/ 00073 00074 //: PPC Special Registers 00075 //!SEC:ppcFront 00076 struct ppc_regs_t { 00077 #if 0 // WANT_CHECKPOINT_SUPPORT 00078 BOOST_SERIALIZE { 00079 ar & BOOST_SERIALIZATION_NVP(regs_C); 00080 ar & BOOST_SERIALIZATION_NVP(regs_L); 00081 ar & BOOST_SERIALIZATION_NVP(regs_CNTR); 00082 ar & BOOST_SERIALIZATION_NVP(regs_TBR); 00083 } 00084 #endif 00085 //: control register file 00086 md_ctrl_t regs_C; 00087 //: Link regsiter 00088 md_link_t regs_L; 00089 //: Counter register 00090 md_ctr_t regs_CNTR; 00091 //: Time base register 00092 md_addr_t regs_TBR; 00093 }; 00094 00095 /* create a register file */ 00096 ppc_regs_t *regs_create(void); 00097 00098 /* initialize architected register state */ 00099 void 00100 regs_init( ppc_regs_t *regs); /* register file to initialize */ 00101 00102 /* dump all architected register state values to output stream STREAM */ 00103 /*void 00104 FILE *stream); */ 00105 /* destroy a register file */ 00106 /*void 00107 regs_destroy(struct regs_t *regs); 00108 */ 00109 #endif /* REGS_H */