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 --- |