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::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 |
658RubyPort::M5Port::sendNextCycle(PacketPtr pkt, bool send_as_snoop) |
659{ 660 //minimum latency, must be > 0 |
661 queue.schedSendTiming(pkt, curTick() + (1 * g_eventQueue_ptr->getClock()), 662 send_as_snoop); |
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); |
703 // send as a snoop request 704 (*p)->sendNextCycle(pkt, true); |
705 } 706 } 707} |