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::recvAtomicBackdoor(PacketPtr pkt, PortID slave_port_id, 725 MemBackdoorPtr *backdoor) |
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 |
804 auto master = masterPorts[master_port_id]; 805 response_latency = backdoor ? 806 master->sendAtomicBackdoor(pkt, *backdoor) : 807 master->sendAtomic(pkt); |
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 --- |