RubyPort.cc (8931:7a1dfb191e3f) | RubyPort.cc (8948:e95ee70f876c) |
---|---|
1/* 2 * Copyright (c) 2012 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 --- 119 unchanged lines hidden (view full) --- 128 : QueuedSlavePort(_name, _port, queue), queue(*_port, *this), 129 ruby_port(_port), ruby_system(_system), 130 _onRetryList(false), access_phys_mem(_access_phys_mem) 131{ 132 DPRINTF(RubyPort, "creating slave port on ruby sequencer %s\n", _name); 133} 134 135Tick | 1/* 2 * Copyright (c) 2012 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 --- 119 unchanged lines hidden (view full) --- 128 : QueuedSlavePort(_name, _port, queue), queue(*_port, *this), 129 ruby_port(_port), ruby_system(_system), 130 _onRetryList(false), access_phys_mem(_access_phys_mem) 131{ 132 DPRINTF(RubyPort, "creating slave port on ruby sequencer %s\n", _name); 133} 134 135Tick |
136RubyPort::PioPort::recvAtomic(PacketPtr pkt) 137{ 138 panic("RubyPort::PioPort::recvAtomic() not implemented!\n"); 139 return 0; 140} 141 142Tick | |
143RubyPort::M5Port::recvAtomic(PacketPtr pkt) 144{ 145 panic("RubyPort::M5Port::recvAtomic() not implemented!\n"); 146 return 0; 147} 148 149 150bool --- 506 unchanged lines hidden (view full) --- 657 sendNextCycle(pkt); 658 } else { 659 delete pkt; 660 } 661 DPRINTF(RubyPort, "Hit callback done!\n"); 662} 663 664bool | 136RubyPort::M5Port::recvAtomic(PacketPtr pkt) 137{ 138 panic("RubyPort::M5Port::recvAtomic() not implemented!\n"); 139 return 0; 140} 141 142 143bool --- 506 unchanged lines hidden (view full) --- 650 sendNextCycle(pkt); 651 } else { 652 delete pkt; 653 } 654 DPRINTF(RubyPort, "Hit callback done!\n"); 655} 656 657bool |
665RubyPort::M5Port::sendNextCycle(PacketPtr pkt) | 658RubyPort::M5Port::sendNextCycle(PacketPtr pkt, bool send_as_snoop) |
666{ 667 //minimum latency, must be > 0 | 659{ 660 //minimum latency, must be > 0 |
668 queue.schedSendTiming(pkt, curTick() + (1 * g_eventQueue_ptr->getClock())); | 661 queue.schedSendTiming(pkt, curTick() + (1 * g_eventQueue_ptr->getClock()), 662 send_as_snoop); |
669 return true; 670} 671 672bool 673RubyPort::PioPort::sendNextCycle(PacketPtr pkt) 674{ 675 //minimum latency, must be > 0 676 queue.schedSendTiming(pkt, curTick() + (1 * g_eventQueue_ptr->getClock())); --- 24 unchanged lines hidden (view full) --- 701RubyPort::ruby_eviction_callback(const Address& address) 702{ 703 DPRINTF(RubyPort, "Sending invalidations.\n"); 704 // should this really be using funcMasterId? 705 Request req(address.getAddress(), 0, 0, Request::funcMasterId); 706 for (CpuPortIter p = slave_ports.begin(); p != slave_ports.end(); ++p) { 707 if ((*p)->getMasterPort().isSnooping()) { 708 Packet *pkt = new Packet(&req, MemCmd::InvalidationReq, -1); | 663 return true; 664} 665 666bool 667RubyPort::PioPort::sendNextCycle(PacketPtr pkt) 668{ 669 //minimum latency, must be > 0 670 queue.schedSendTiming(pkt, curTick() + (1 * g_eventQueue_ptr->getClock())); --- 24 unchanged lines hidden (view full) --- 695RubyPort::ruby_eviction_callback(const Address& address) 696{ 697 DPRINTF(RubyPort, "Sending invalidations.\n"); 698 // should this really be using funcMasterId? 699 Request req(address.getAddress(), 0, 0, Request::funcMasterId); 700 for (CpuPortIter p = slave_ports.begin(); p != slave_ports.end(); ++p) { 701 if ((*p)->getMasterPort().isSnooping()) { 702 Packet *pkt = new Packet(&req, MemCmd::InvalidationReq, -1); |
709 (*p)->sendNextCycle(pkt); | 703 // send as a snoop request 704 (*p)->sendNextCycle(pkt, true); |
710 } 711 } 712} | 705 } 706 } 707} |