1/*
2 * Copyright (c) 2012-2013, 2015-2016, 2018 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

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

119 public:
120
121 /** Track if we sent this as a whole line write or not */
122 bool wasWholeLineWrite;
123
124 /** True if the entry is just a simple forward from an upper level */
125 bool isForward;
126
127 class Target {
127 class Target : public QueueEntry::Target {
128 public:
129
130 enum Source {
131 FromCPU,
132 FromSnoop,
133 FromPrefetcher
134 };
135
136 const Tick recvTime; //!< Time when request was received (for stats)
137 const Tick readyTime; //!< Time when request is ready to be serviced
138 const Counter order; //!< Global order (for memory consistency mgmt)
139 const PacketPtr pkt; //!< Pending request packet.
136 const Source source; //!< Request from cpu, memory, or prefetcher?
137
138 /**
139 * We use this flag to track whether we have cleared the
140 * downstreamPending flag for the MSHR of the cache above
141 * where this packet originates from and guard noninitial
142 * attempts to clear it.
143 *

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

152 */
153 bool markedPending;
154
155 const bool allocOnFill; //!< Should the response servicing this
156 //!< target list allocate in the cache?
157
158 Target(PacketPtr _pkt, Tick _readyTime, Counter _order,
159 Source _source, bool _markedPending, bool alloc_on_fill)
164 : recvTime(curTick()), readyTime(_readyTime), order(_order),
165 pkt(_pkt), source(_source), markedPending(_markedPending),
166 allocOnFill(alloc_on_fill)
160 : QueueEntry::Target(_pkt, _readyTime, _order), source(_source),
161 markedPending(_markedPending), allocOnFill(alloc_on_fill)
162 {}
163 };
164
165 class TargetList : public std::list<Target> {
166
167 public:
168 bool needsWritable;
169 bool hasUpgrade;

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

466 * @return true if there are targets
467 */
468 bool hasTargets() const { return !targets.empty(); }
469
470 /**
471 * Returns a reference to the first target.
472 * @return A pointer to the first target.
473 */
479 Target *getTarget()
474 QueueEntry::Target *getTarget() override
475 {
476 assert(hasTargets());
477 return &targets.front();
478 }
479
480 /**
481 * Pop first target.
482 */

--- 54 unchanged lines hidden ---