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