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