LSQSenderState represents the LQ/SQ index using uint8_t, which supports up to
256 entries (including the sentinel entry). Sending packets to memory with a
higher index than 255 truncates the index, such that the response matches the
wrong entry. For instance, this can result in a deadlock if a store completion
does not clear the head entry.
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);
LQEntries = size_plus_sentinel;
}
+ assert(LQEntries <= 256);
}
template<class Impl>
} else {
SQEntries = size_plus_sentinel;
}
+
+ assert(SQEntries <= 256);
}
template <class Impl>