1/* 2 * Copyright (c) 2012-2015 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 --- 73 unchanged lines hidden (view full) --- 82 { 83 InvalidCmd, 84 ReadReq, 85 ReadResp, 86 ReadRespWithInvalidate, 87 WriteReq, 88 WriteResp, 89 Writeback, |
90 CleanEvict, |
91 SoftPFReq, 92 HardPFReq, 93 SoftPFResp, 94 HardPFResp, 95 WriteInvalidateReq, 96 WriteInvalidateResp, 97 UpgradeReq, 98 SCUpgradeReq, // Special "weak" upgrade for StoreCond --- 405 unchanged lines hidden (view full) --- 504 bool isExpressSnoop() const { return flags.isSet(EXPRESS_SNOOP); } 505 void setSupplyExclusive() { flags.set(SUPPLY_EXCLUSIVE); } 506 void clearSupplyExclusive() { flags.clear(SUPPLY_EXCLUSIVE); } 507 bool isSupplyExclusive() const { return flags.isSet(SUPPLY_EXCLUSIVE); } 508 void setSuppressFuncError() { flags.set(SUPPRESS_FUNC_ERROR); } 509 bool suppressFuncError() const { return flags.isSet(SUPPRESS_FUNC_ERROR); } 510 void setBlockCached() { flags.set(BLOCK_CACHED); } 511 bool isBlockCached() const { return flags.isSet(BLOCK_CACHED); } |
512 void clearBlockCached() { flags.clear(BLOCK_CACHED); } |
513 514 // Network error conditions... encapsulate them as methods since 515 // their encoding keeps changing (from result field to command 516 // field, etc.) 517 void 518 setBadAddress() 519 { 520 assert(isResponse()); --- 413 unchanged lines hidden (view full) --- 934 // data pointer 935 return checkFunctional(other, other->getAddr(), other->isSecure(), 936 other->getSize(), 937 other->hasData() ? 938 other->getPtr<uint8_t>() : NULL); 939 } 940 941 /** |
942 * Is this request notification of a clean or dirty eviction from the cache. 943 **/ 944 bool 945 evictingBlock() const 946 { 947 return (cmd == MemCmd::Writeback || 948 cmd == MemCmd::CleanEvict); 949 } 950 951 /** 952 * Does the request need to check for cached copies of the same block 953 * in the memory hierarchy above. 954 **/ 955 bool 956 mustCheckAbove() const 957 { 958 return (cmd == MemCmd::HardPFReq || 959 evictingBlock()); 960 } 961 962 /** |
963 * Check a functional request against a memory value represented 964 * by a base/size pair and an associated data array. If the 965 * current packet is a read, it may be satisfied by the memory 966 * value. If the current packet is a write, it may update the 967 * memory value. 968 */ 969 bool 970 checkFunctional(Printable *obj, Addr base, bool is_secure, int size, --- 35 unchanged lines hidden --- |