RubyPort.cc (9152:86c0e6ca5e7c) RubyPort.cc (9163:3b5e13ac1940)
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

--- 182 unchanged lines hidden (view full) ---

191 // Check for pio requests and directly send them to the dedicated
192 // pio port.
193 if (!isPhysMemAddress(pkt->getAddr())) {
194 assert(ruby_port->pio_port.isConnected());
195 DPRINTF(RubyPort,
196 "Request for address 0x%#x is assumed to be a pio request\n",
197 pkt->getAddr());
198
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

--- 182 unchanged lines hidden (view full) ---

191 // Check for pio requests and directly send them to the dedicated
192 // pio port.
193 if (!isPhysMemAddress(pkt->getAddr())) {
194 assert(ruby_port->pio_port.isConnected());
195 DPRINTF(RubyPort,
196 "Request for address 0x%#x is assumed to be a pio request\n",
197 pkt->getAddr());
198
199 return ruby_port->pio_port.sendNextCycle(pkt);
199 // send next cycle
200 ruby_port->pio_port.schedTimingReq(pkt, curTick() +
201 g_eventQueue_ptr->getClock());
202 return true;
200 }
201
202 assert(Address(pkt->getAddr()).getOffset() + pkt->getSize() <=
203 RubySystem::getBlockSizeBytes());
204
205 // Submit the ruby request
206 RequestStatus requestStatus = ruby_port->makeRequest(pkt);
207

--- 434 unchanged lines hidden (view full) ---

642 ruby_port->system->getPhysMem().access(pkt);
643 } else if (needsResponse) {
644 pkt->makeResponse();
645 }
646
647 // turn packet around to go back to requester if response expected
648 if (needsResponse) {
649 DPRINTF(RubyPort, "Sending packet back over port\n");
203 }
204
205 assert(Address(pkt->getAddr()).getOffset() + pkt->getSize() <=
206 RubySystem::getBlockSizeBytes());
207
208 // Submit the ruby request
209 RequestStatus requestStatus = ruby_port->makeRequest(pkt);
210

--- 434 unchanged lines hidden (view full) ---

645 ruby_port->system->getPhysMem().access(pkt);
646 } else if (needsResponse) {
647 pkt->makeResponse();
648 }
649
650 // turn packet around to go back to requester if response expected
651 if (needsResponse) {
652 DPRINTF(RubyPort, "Sending packet back over port\n");
650 sendNextCycle(pkt);
653 // send next cycle
654 schedTimingResp(pkt, curTick() + g_eventQueue_ptr->getClock());
651 } else {
652 delete pkt;
653 }
654 DPRINTF(RubyPort, "Hit callback done!\n");
655}
656
655 } else {
656 delete pkt;
657 }
658 DPRINTF(RubyPort, "Hit callback done!\n");
659}
660
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()));
671 return true;
672}
673
674AddrRangeList
675RubyPort::M5Port::getAddrRanges() const
676{
677 // at the moment the assumption is that the master does not care
678 AddrRangeList ranges;
679 return ranges;
680}
681

--- 27 unchanged lines hidden ---
661AddrRangeList
662RubyPort::M5Port::getAddrRanges() const
663{
664 // at the moment the assumption is that the master does not care
665 AddrRangeList ranges;
666 return ranges;
667}
668

--- 27 unchanged lines hidden ---