cache.cc (12351:17eaa27bef22) | cache.cc (12425:7f8c9032b18c) |
---|---|
1/* 2 * Copyright (c) 2010-2017 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 --- 1007 unchanged lines hidden (view full) --- 1016 cpu_pkt->cmd == MemCmd::StoreCondFailReq) { 1017 // Even though this SC will fail, we still need to send out the 1018 // request and get the data to supply it to other snoopers in the case 1019 // where the determination the StoreCond fails is delayed due to 1020 // all caches not being on the same local bus. 1021 cmd = MemCmd::SCUpgradeFailReq; 1022 } else { 1023 // block is invalid | 1/* 2 * Copyright (c) 2010-2017 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 --- 1007 unchanged lines hidden (view full) --- 1016 cpu_pkt->cmd == MemCmd::StoreCondFailReq) { 1017 // Even though this SC will fail, we still need to send out the 1018 // request and get the data to supply it to other snoopers in the case 1019 // where the determination the StoreCond fails is delayed due to 1020 // all caches not being on the same local bus. 1021 cmd = MemCmd::SCUpgradeFailReq; 1022 } else { 1023 // block is invalid |
1024 1025 // If the request does not need a writable there are two cases 1026 // where we need to ensure the response will not fetch the 1027 // block in dirty state: 1028 // * this cache is read only and it does not perform 1029 // writebacks, 1030 // * this cache is mostly exclusive and will not fill (since 1031 // it does not fill it will have to writeback the dirty data 1032 // immediately which generates uneccesary writebacks). 1033 bool force_clean_rsp = isReadOnly || clusivity == Enums::mostly_excl; |
|
1024 cmd = needsWritable ? MemCmd::ReadExReq : | 1034 cmd = needsWritable ? MemCmd::ReadExReq : |
1025 (isReadOnly ? MemCmd::ReadCleanReq : MemCmd::ReadSharedReq); | 1035 (force_clean_rsp ? MemCmd::ReadCleanReq : MemCmd::ReadSharedReq); |
1026 } 1027 PacketPtr pkt = new Packet(cpu_pkt->req, cmd, blkSize); 1028 1029 // if there are upstream caches that have already marked the 1030 // packet as having sharers (not passing writable), pass that info 1031 // downstream 1032 if (cpu_pkt->hasSharers() && !needsWritable) { 1033 // note that cpu_pkt may have spent a considerable time in the --- 1830 unchanged lines hidden --- | 1036 } 1037 PacketPtr pkt = new Packet(cpu_pkt->req, cmd, blkSize); 1038 1039 // if there are upstream caches that have already marked the 1040 // packet as having sharers (not passing writable), pass that info 1041 // downstream 1042 if (cpu_pkt->hasSharers() && !needsWritable) { 1043 // note that cpu_pkt may have spent a considerable time in the --- 1830 unchanged lines hidden --- |