2c2
< * Copyright (c) 2004-2005 The Regents of The University of Michigan
---
> * Copyright (c) 2004-2006 The Regents of The University of Michigan
31,32c31,32
< #ifndef __CPU_O3_CPU_COMM_HH__
< #define __CPU_O3_CPU_COMM_HH__
---
> #ifndef __CPU_O3_COMM_HH__
> #define __CPU_O3_COMM_HH__
35a36
> #include "arch/faults.hh"
40,41c41,43
< // Find better place to put this typedef.
< // The impl might be the best place for this.
---
> // Typedef for physical register index type. Although the Impl would be the
> // most likely location for this, there are a few classes that need this
> // typedef yet are not templated on the Impl. For now it will be defined here.
45c47
< struct SimpleFetchSimpleDecode {
---
> struct DefaultFetchDefaultDecode {
50a53,55
> Fault fetchFault;
> InstSeqNum fetchFaultSN;
> bool clearFetchFault;
54c59
< struct SimpleDecodeSimpleRename {
---
> struct DefaultDecodeDefaultRename {
63c68
< struct SimpleRenameSimpleIEW {
---
> struct DefaultRenameDefaultIEW {
72c77
< struct SimpleIEWSimpleCommit {
---
> struct DefaultIEWDefaultCommit {
79,84c84,91
< bool squash;
< bool branchMispredict;
< bool branchTaken;
< uint64_t mispredPC;
< uint64_t nextPC;
< InstSeqNum squashedSeqNum;
---
> bool squash[Impl::MaxThreads];
> bool branchMispredict[Impl::MaxThreads];
> bool branchTaken[Impl::MaxThreads];
> uint64_t mispredPC[Impl::MaxThreads];
> uint64_t nextPC[Impl::MaxThreads];
> InstSeqNum squashedSeqNum[Impl::MaxThreads];
>
> bool includeSquashInst[Impl::MaxThreads];
95a103
> template<class Impl>
99d106
< bool stall;
105c112
< // Might want to package this kind of branch stuff into a single
---
> // @todo: Might want to package this kind of branch stuff into a single
110a118,119
>
> unsigned branchCount;
113c122
< decodeComm decodeInfo;
---
> decodeComm decodeInfo[Impl::MaxThreads];
120d128
< bool stall;
125c133
< renameComm renameInfo;
---
> renameComm renameInfo[Impl::MaxThreads];
128,129d135
< bool stall;
<
130a137
> bool usedIQ;
131a139,146
> bool usedLSQ;
> unsigned freeLSQEntries;
>
> unsigned iqCount;
> unsigned ldstqCount;
>
> unsigned dispatched;
> unsigned dispatchedToLSQ;
134c149
< iewComm iewInfo;
---
> iewComm iewInfo[Impl::MaxThreads];
137,138c152
< bool squash;
< bool stall;
---
> bool usedROB;
139a154
> bool emptyROB;
140a156,158
> bool squash;
> bool robSquashing;
>
146,147d163
< bool robSquashing;
<
153,155c169,172
< // Extra bit of information so that the LDSTQ only updates when it
< // needs to.
< bool commitIsLoad;
---
> //Just in case we want to do a commit/squash on a cycle
> //(necessary for multiple ROBs?)
> bool commitInsts;
> InstSeqNum squashSeqNum;
159a177,184
>
> // Hack for now to send back an uncached access to the IEW stage.
> typedef typename Impl::DynInstPtr DynInstPtr;
> bool uncached;
> DynInstPtr uncachedLoad;
>
> bool interruptPending;
> bool clearInterrupt;
162c187,196
< commitComm commitInfo;
---
> commitComm commitInfo[Impl::MaxThreads];
>
> bool decodeBlock[Impl::MaxThreads];
> bool decodeUnblock[Impl::MaxThreads];
> bool renameBlock[Impl::MaxThreads];
> bool renameUnblock[Impl::MaxThreads];
> bool iewBlock[Impl::MaxThreads];
> bool iewUnblock[Impl::MaxThreads];
> bool commitBlock[Impl::MaxThreads];
> bool commitUnblock[Impl::MaxThreads];
165c199
< #endif //__CPU_O3_CPU_COMM_HH__
---
> #endif //__CPU_O3_COMM_HH__