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 --- |