1/* 2 * Copyright 2014 Google, Inc. 3 * Copyright (c) 2010-2013 ARM Limited 4 * All rights reserved 5 * 6 * The license below extends only to copyright in the software and shall 7 * not be construed as granting a license to any other intellectual 8 * property including but not limited to intellectual property relating --- 704 unchanged lines hidden (view full) --- 713TimingSimpleCPU::IcachePort::ITickEvent::process() 714{ 715 cpu->completeIfetch(pkt); 716} 717 718bool 719TimingSimpleCPU::IcachePort::recvTimingResp(PacketPtr pkt) 720{ |
721 DPRINTF(SimpleCPU, "Received fetch response %#x\n", pkt->getAddr()); 722 // we should only ever see one response per cycle since we only 723 // issue a new request once this response is sunk 724 assert(!tickEvent.scheduled()); |
725 // delay processing of returned data until next CPU clock edge |
726 tickEvent.schedule(pkt, cpu->clockEdge()); |
727 |
728 return true; 729} 730 731void 732TimingSimpleCPU::IcachePort::recvRetry() 733{ 734 // we shouldn't get a retry unless we have a packet that we're 735 // waiting to transmit --- 93 unchanged lines hidden (view full) --- 829 if(cpu->getAddrMonitor()->doMonitor(pkt)) { 830 cpu->wakeup(); 831 } 832} 833 834bool 835TimingSimpleCPU::DcachePort::recvTimingResp(PacketPtr pkt) 836{ |
837 DPRINTF(SimpleCPU, "Received load/store response %#x\n", pkt->getAddr()); |
838 |
839 // The timing CPU is not really ticked, instead it relies on the 840 // memory system (fetch and load/store) to set the pace. 841 if (!tickEvent.scheduled()) { 842 // Delay processing of returned data until next CPU clock edge 843 tickEvent.schedule(pkt, cpu->clockEdge()); 844 return true; |
845 } else { |
846 // In the case of a split transaction and a cache that is 847 // faster than a CPU we could get two responses in the 848 // same tick, delay the second one 849 if (!retryEvent.scheduled()) 850 cpu->schedule(retryEvent, cpu->clockEdge(Cycles(1))); 851 return false; |
852 } |
853} 854 855void 856TimingSimpleCPU::DcachePort::DTickEvent::process() 857{ 858 cpu->completeDataAccess(pkt); 859} 860 --- 83 unchanged lines hidden --- |