packet.hh (13367:dc06baae4275) packet.hh (13732:43e7199f511f)
1/*
1/*
2 * Copyright (c) 2012-2018 ARM Limited
2 * Copyright (c) 2012-2019 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
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

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

260 typedef ::Flags<FlagsType> Flags;
261
262 private:
263
264 enum : FlagsType {
265 // Flags to transfer across when copying a packet
266 COPY_FLAGS = 0x0000003F,
267
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
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

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

260 typedef ::Flags<FlagsType> Flags;
261
262 private:
263
264 enum : FlagsType {
265 // Flags to transfer across when copying a packet
266 COPY_FLAGS = 0x0000003F,
267
268 // Flags that are used to create reponse packets
269 RESPONDER_FLAGS = 0x00000009,
270
268 // Does this packet have sharers (which means it should not be
269 // considered writable) or not. See setHasSharers below.
270 HAS_SHARERS = 0x00000001,
271
272 // Special control flags
273 /// Special timing-mode atomic snoop for multi-level coherence.
274 EXPRESS_SNOOP = 0x00000002,
275

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

645 assert(cacheResponding());
646 assert(!responderHadWritable());
647 flags.set(RESPONDER_HAD_WRITABLE);
648 }
649 bool responderHadWritable() const
650 { return flags.isSet(RESPONDER_HAD_WRITABLE); }
651
652 /**
271 // Does this packet have sharers (which means it should not be
272 // considered writable) or not. See setHasSharers below.
273 HAS_SHARERS = 0x00000001,
274
275 // Special control flags
276 /// Special timing-mode atomic snoop for multi-level coherence.
277 EXPRESS_SNOOP = 0x00000002,
278

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

648 assert(cacheResponding());
649 assert(!responderHadWritable());
650 flags.set(RESPONDER_HAD_WRITABLE);
651 }
652 bool responderHadWritable() const
653 { return flags.isSet(RESPONDER_HAD_WRITABLE); }
654
655 /**
656 * Copy the reponse flags from an input packet to this packet. The
657 * reponse flags determine whether a responder has been found and
658 * the state at which the block will be at the destination.
659 *
660 * @pkt The packet that we will copy flags from
661 */
662 void copyResponderFlags(const PacketPtr pkt);
663
664 /**
653 * A writeback/writeclean cmd gets propagated further downstream
654 * by the receiver when the flag is set.
655 */
656 void setWriteThrough()
657 {
658 assert(cmd.isWrite() &&
659 (cmd.isEviction() || cmd == MemCmd::WriteClean));
660 flags.set(WRITE_THROUGH);

--- 623 unchanged lines hidden ---
665 * A writeback/writeclean cmd gets propagated further downstream
666 * by the receiver when the flag is set.
667 */
668 void setWriteThrough()
669 {
670 assert(cmd.isWrite() &&
671 (cmd.isEviction() || cmd == MemCmd::WriteClean));
672 flags.set(WRITE_THROUGH);

--- 623 unchanged lines hidden ---