mshr.hh (13351:1d456a63bfbc) mshr.hh (13859:4156ac0c7257)
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
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
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.
140 const Source source; //!< Request from cpu, memory, or prefetcher?
141
142 /**
143 * We use this flag to track whether we have cleared the
144 * downstreamPending flag for the MSHR of the cache above
145 * where this packet originates from and guard noninitial
146 * attempts to clear it.
147 *

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

156 */
157 bool markedPending;
158
159 const bool allocOnFill; //!< Should the response servicing this
160 //!< target list allocate in the cache?
161
162 Target(PacketPtr _pkt, Tick _readyTime, Counter _order,
163 Source _source, bool _markedPending, bool alloc_on_fill)
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)
167 {}
168 };
169
170 class TargetList : public std::list<Target> {
171
172 public:
173 bool needsWritable;
174 bool hasUpgrade;

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

471 * @return true if there are targets
472 */
473 bool hasTargets() const { return !targets.empty(); }
474
475 /**
476 * Returns a reference to the first target.
477 * @return A pointer to the first target.
478 */
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
480 {
481 assert(hasTargets());
482 return &targets.front();
483 }
484
485 /**
486 * Pop first target.
487 */

--- 54 unchanged lines hidden ---
475 {
476 assert(hasTargets());
477 return &targets.front();
478 }
479
480 /**
481 * Pop first target.
482 */

--- 54 unchanged lines hidden ---