2c2
< * Copyright (c) 2004-2005 The Regents of The University of Michigan
---
> * Copyright (c) 2004-2006 The Regents of The University of Michigan
29,30c29,30
< #ifndef __CPU_O3_CPU_COMM_HH__
< #define __CPU_O3_CPU_COMM_HH__
---
> #ifndef __CPU_O3_COMM_HH__
> #define __CPU_O3_COMM_HH__
33a34
> #include "arch/faults.hh"
38,39c39,41
< // 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.
43c45
< struct SimpleFetchSimpleDecode {
---
> struct DefaultFetchDefaultDecode {
48a51,53
> Fault fetchFault;
> InstSeqNum fetchFaultSN;
> bool clearFetchFault;
52c57
< struct SimpleDecodeSimpleRename {
---
> struct DefaultDecodeDefaultRename {
61c66
< struct SimpleRenameSimpleIEW {
---
> struct DefaultRenameDefaultIEW {
70c75
< struct SimpleIEWSimpleCommit {
---
> struct DefaultIEWDefaultCommit {
77,82c82,89
< 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];
93a101
> template<class Impl>
97d104
< bool stall;
103c110
< // 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
108a116,117
>
> unsigned branchCount;
111c120
< decodeComm decodeInfo;
---
> decodeComm decodeInfo[Impl::MaxThreads];
118d126
< bool stall;
123c131
< renameComm renameInfo;
---
> renameComm renameInfo[Impl::MaxThreads];
126,127d133
< bool stall;
<
128a135
> bool usedIQ;
129a137,144
> bool usedLSQ;
> unsigned freeLSQEntries;
>
> unsigned iqCount;
> unsigned ldstqCount;
>
> unsigned dispatched;
> unsigned dispatchedToLSQ;
132c147
< iewComm iewInfo;
---
> iewComm iewInfo[Impl::MaxThreads];
135,136c150
< bool squash;
< bool stall;
---
> bool usedROB;
137a152
> bool emptyROB;
138a154,156
> bool squash;
> bool robSquashing;
>
144,145d161
< bool robSquashing;
<
151,153c167,170
< // 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;
157a175,182
>
> // 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;
160c185,194
< 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];
163c197
< #endif //__CPU_O3_CPU_COMM_HH__
---
> #endif //__CPU_O3_COMM_HH__