coherent_xbar.cc (13808:0a44fbc3a853) | coherent_xbar.cc (13847:c9b92a513019) |
---|---|
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 --- 707 unchanged lines hidden (view full) --- 716{ 717 // responses and snoop responses never block on forwarding them, 718 // so the retry will always be coming from a port to which we 719 // tried to forward a request 720 reqLayers[master_port_id]->recvRetry(); 721} 722 723Tick | 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 --- 707 unchanged lines hidden (view full) --- 716{ 717 // responses and snoop responses never block on forwarding them, 718 // so the retry will always be coming from a port to which we 719 // tried to forward a request 720 reqLayers[master_port_id]->recvRetry(); 721} 722 723Tick |
724CoherentXBar::recvAtomic(PacketPtr pkt, PortID slave_port_id) | 724CoherentXBar::recvAtomicBackdoor(PacketPtr pkt, PortID slave_port_id, 725 MemBackdoorPtr *backdoor) |
725{ 726 DPRINTF(CoherentXBar, "%s: src %s packet %s\n", __func__, 727 slavePorts[slave_port_id]->name(), pkt->print()); 728 729 unsigned int pkt_size = pkt->hasData() ? pkt->getSize() : 0; 730 unsigned int pkt_cmd = pkt->cmdToIndex(); 731 732 MemCmd snoop_response_cmd = MemCmd::InvalidCmd; --- 62 unchanged lines hidden (view full) --- 795 // make sure that the write request (e.g., WriteClean) 796 // will stop at the memory below if this crossbar is its 797 // destination 798 if (pkt->isWrite() && is_destination) { 799 pkt->clearWriteThrough(); 800 } 801 802 // forward the request to the appropriate destination | 726{ 727 DPRINTF(CoherentXBar, "%s: src %s packet %s\n", __func__, 728 slavePorts[slave_port_id]->name(), pkt->print()); 729 730 unsigned int pkt_size = pkt->hasData() ? pkt->getSize() : 0; 731 unsigned int pkt_cmd = pkt->cmdToIndex(); 732 733 MemCmd snoop_response_cmd = MemCmd::InvalidCmd; --- 62 unchanged lines hidden (view full) --- 796 // make sure that the write request (e.g., WriteClean) 797 // will stop at the memory below if this crossbar is its 798 // destination 799 if (pkt->isWrite() && is_destination) { 800 pkt->clearWriteThrough(); 801 } 802 803 // forward the request to the appropriate destination |
803 response_latency = masterPorts[master_port_id]->sendAtomic(pkt); | 804 auto master = masterPorts[master_port_id]; 805 response_latency = backdoor ? 806 master->sendAtomicBackdoor(pkt, *backdoor) : 807 master->sendAtomic(pkt); |
804 } else { 805 // if it does not need a response we sink the packet above 806 assert(pkt->needsResponse()); 807 808 pkt->makeResponse(); 809 } 810 } 811 --- 322 unchanged lines hidden --- | 808 } else { 809 // if it does not need a response we sink the packet above 810 assert(pkt->needsResponse()); 811 812 pkt->makeResponse(); 813 } 814 } 815 --- 322 unchanged lines hidden --- |