coherent_xbar.cc (12780:14937f6495b4) | coherent_xbar.cc (12823:ba630bc7a36d) |
---|---|
1/* 2 * Copyright (c) 2011-2018 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 --- 988 unchanged lines hidden (view full) --- 997 // there is no need to continue if the snooping has found what we 998 // were looking for and the packet is already a response 999 if (!pkt->isResponse()) { 1000 // since our slave ports are queued ports we need to check them as well 1001 for (const auto& p : slavePorts) { 1002 // if we find a response that has the data, then the 1003 // downstream caches/memories may be out of date, so simply stop 1004 // here | 1/* 2 * Copyright (c) 2011-2018 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 --- 988 unchanged lines hidden (view full) --- 997 // there is no need to continue if the snooping has found what we 998 // were looking for and the packet is already a response 999 if (!pkt->isResponse()) { 1000 // since our slave ports are queued ports we need to check them as well 1001 for (const auto& p : slavePorts) { 1002 // if we find a response that has the data, then the 1003 // downstream caches/memories may be out of date, so simply stop 1004 // here |
1005 if (p->checkFunctional(pkt)) { | 1005 if (p->trySatisfyFunctional(pkt)) { |
1006 if (pkt->needsResponse()) 1007 pkt->makeResponse(); 1008 return; 1009 } 1010 } 1011 1012 PortID dest_id = findPort(RangeSize(pkt->getAddr(), pkt->getSize())); 1013 --- 6 unchanged lines hidden (view full) --- 1020{ 1021 if (!pkt->isPrint()) { 1022 // don't do DPRINTFs on PrintReq as it clutters up the output 1023 DPRINTF(CoherentXBar, "%s: src %s packet %s\n", __func__, 1024 masterPorts[master_port_id]->name(), pkt->print()); 1025 } 1026 1027 for (const auto& p : slavePorts) { | 1006 if (pkt->needsResponse()) 1007 pkt->makeResponse(); 1008 return; 1009 } 1010 } 1011 1012 PortID dest_id = findPort(RangeSize(pkt->getAddr(), pkt->getSize())); 1013 --- 6 unchanged lines hidden (view full) --- 1020{ 1021 if (!pkt->isPrint()) { 1022 // don't do DPRINTFs on PrintReq as it clutters up the output 1023 DPRINTF(CoherentXBar, "%s: src %s packet %s\n", __func__, 1024 masterPorts[master_port_id]->name(), pkt->print()); 1025 } 1026 1027 for (const auto& p : slavePorts) { |
1028 if (p->checkFunctional(pkt)) { | 1028 if (p->trySatisfyFunctional(pkt)) { |
1029 if (pkt->needsResponse()) 1030 pkt->makeResponse(); 1031 return; 1032 } 1033 } 1034 1035 // forward to all snoopers 1036 forwardFunctional(pkt, InvalidPortID); --- 97 unchanged lines hidden --- | 1029 if (pkt->needsResponse()) 1030 pkt->makeResponse(); 1031 return; 1032 } 1033 } 1034 1035 // forward to all snoopers 1036 forwardFunctional(pkt, InvalidPortID); --- 97 unchanged lines hidden --- |