summaryrefslogtreecommitdiff
path: root/src/cpu/o3/lsq_unit_impl.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/cpu/o3/lsq_unit_impl.hh')
-rw-r--r--src/cpu/o3/lsq_unit_impl.hh26
1 files changed, 8 insertions, 18 deletions
diff --git a/src/cpu/o3/lsq_unit_impl.hh b/src/cpu/o3/lsq_unit_impl.hh
index d8f1c39c6..5438c4d07 100644
--- a/src/cpu/o3/lsq_unit_impl.hh
+++ b/src/cpu/o3/lsq_unit_impl.hh
@@ -142,8 +142,10 @@ LSQUnit<Impl>::completeDataAccess(PacketPtr pkt)
}
template <class Impl>
-LSQUnit<Impl>::LSQUnit()
- : loads(0), stores(0), storesToWB(0), cacheBlockMask(0), stalled(false),
+LSQUnit<Impl>::LSQUnit(uint32_t lqEntries, uint32_t sqEntries)
+ : lsqID(-1), storeQueue(sqEntries+1), loadQueue(lqEntries+1),
+ LQEntries(lqEntries+1), SQEntries(lqEntries+1),
+ loads(0), stores(0), storesToWB(0), cacheBlockMask(0), stalled(false),
isStoreBlocked(false), storeInFlight(false), hasPendingPkt(false),
pendingPkt(nullptr)
{
@@ -152,28 +154,16 @@ LSQUnit<Impl>::LSQUnit()
template<class Impl>
void
LSQUnit<Impl>::init(O3CPU *cpu_ptr, IEW *iew_ptr, DerivO3CPUParams *params,
- LSQ *lsq_ptr, unsigned maxLQEntries, unsigned maxSQEntries,
- unsigned id)
+ LSQ *lsq_ptr, unsigned id)
{
+ lsqID = id;
+
cpu = cpu_ptr;
iewStage = iew_ptr;
lsq = lsq_ptr;
- lsqID = id;
-
- DPRINTF(LSQUnit, "Creating LSQUnit%i object.\n",id);
-
- // Add 1 for the sentinel entry (they are circular queues).
- LQEntries = maxLQEntries + 1;
- SQEntries = maxSQEntries + 1;
-
- //Due to uint8_t index in LSQSenderState
- assert(LQEntries <= 256);
- assert(SQEntries <= 256);
-
- loadQueue.resize(LQEntries);
- storeQueue.resize(SQEntries);
+ DPRINTF(LSQUnit, "Creating LSQUnit%i object.\n",lsqID);
depCheckShift = params->LSQDepCheckShift;
checkLoads = params->LSQCheckLoads;