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}