Deleted Added
sdiff udiff text old ( 8592:30a97c4198df ) new ( 8727:b3995530319f )
full compact
1/*
2 * Copyright (c) 2010 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 124 unchanged lines hidden (view full) ---

133 delete pkt->req;
134 delete pkt;
135}
136
137template <class Impl>
138LSQUnit<Impl>::LSQUnit()
139 : loads(0), stores(0), storesToWB(0), cacheBlockMask(0), stalled(false),
140 isStoreBlocked(false), isLoadBlocked(false),
141 loadBlockedHandled(false), hasPendingPkt(false)
142{
143}
144
145template<class Impl>
146void
147LSQUnit<Impl>::init(O3CPU *cpu_ptr, IEW *iew_ptr, DerivO3CPUParams *params,
148 LSQ *lsq_ptr, unsigned maxLQEntries, unsigned maxSQEntries,
149 unsigned id)

--- 27 unchanged lines hidden (view full) ---

177
178 usedPorts = 0;
179 cachePorts = params->cachePorts;
180
181 retryPkt = NULL;
182 memDepViolator = NULL;
183
184 blockedLoadSeqNum = 0;
185}
186
187template<class Impl>
188std::string
189LSQUnit<Impl>::name() const
190{
191 if (Impl::MaxThreads == 1) {
192 return iewStage->name() + ".lsq";

--- 572 unchanged lines hidden (view full) ---

765 if (TheISA::HasUnalignedMemAcc) {
766 writebackPendingStore();
767 }
768
769 while (storesToWB > 0 &&
770 storeWBIdx != storeTail &&
771 storeQueue[storeWBIdx].inst &&
772 storeQueue[storeWBIdx].canWB &&
773 usedPorts < cachePorts) {
774
775 if (isStoreBlocked || lsq->cacheBlocked()) {
776 DPRINTF(LSQUnit, "Unable to write back any more stores, cache"
777 " is blocked!\n");
778 break;
779 }
780

--- 304 unchanged lines hidden (view full) ---

1085 storeQueue[storeWBIdx].inst->setCompleted();
1086#if USE_CHECKER
1087 if (cpu->checker) {
1088 cpu->checker->verify(storeQueue[storeWBIdx].inst);
1089 }
1090#endif
1091 }
1092
1093 incrStIdx(storeWBIdx);
1094}
1095
1096template <class Impl>
1097void
1098LSQUnit<Impl>::writeback(DynInstPtr &inst, PacketPtr pkt)
1099{
1100 iewStage->wakeCPU();

--- 57 unchanged lines hidden (view full) ---

1158 stallingStoreIsn, stallingLoadIdx);
1159 stalled = false;
1160 stallingStoreIsn = 0;
1161 iewStage->replayMemInst(loadQueue[stallingLoadIdx]);
1162 }
1163
1164 storeQueue[store_idx].inst->setCompleted();
1165
1166 // Tell the checker we've completed this instruction. Some stores
1167 // may get reported twice to the checker, but the checker can
1168 // handle that case.
1169#if USE_CHECKER
1170 if (cpu->checker) {
1171 cpu->checker->verify(storeQueue[store_idx].inst);
1172 }
1173#endif

--- 121 unchanged lines hidden ---