RubyPort.cc (8949:3fa1ee293096) | RubyPort.cc (8975:7f36d4436074) |
---|---|
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 --- 127 unchanged lines hidden (view full) --- 136RubyPort::M5Port::recvAtomic(PacketPtr pkt) 137{ 138 panic("RubyPort::M5Port::recvAtomic() not implemented!\n"); 139 return 0; 140} 141 142 143bool | 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 --- 127 unchanged lines hidden (view full) --- 136RubyPort::M5Port::recvAtomic(PacketPtr pkt) 137{ 138 panic("RubyPort::M5Port::recvAtomic() not implemented!\n"); 139 return 0; 140} 141 142 143bool |
144RubyPort::PioPort::recvTiming(PacketPtr pkt) | 144RubyPort::PioPort::recvTimingResp(PacketPtr pkt) |
145{ 146 // In FS mode, ruby memory will receive pio responses from devices 147 // and it must forward these responses back to the particular CPU. 148 DPRINTF(RubyPort, "Pio response for address %#x\n", pkt->getAddr()); 149 | 145{ 146 // In FS mode, ruby memory will receive pio responses from devices 147 // and it must forward these responses back to the particular CPU. 148 DPRINTF(RubyPort, "Pio response for address %#x\n", pkt->getAddr()); 149 |
150 assert(pkt->isResponse()); 151 | |
152 // First we must retrieve the request port from the sender State 153 RubyPort::SenderState *senderState = 154 safe_cast<RubyPort::SenderState *>(pkt->senderState); 155 M5Port *port = senderState->port; 156 assert(port != NULL); 157 158 // pop the sender state from the packet 159 pkt->senderState = senderState->saved; 160 delete senderState; 161 | 150 // First we must retrieve the request port from the sender State 151 RubyPort::SenderState *senderState = 152 safe_cast<RubyPort::SenderState *>(pkt->senderState); 153 M5Port *port = senderState->port; 154 assert(port != NULL); 155 156 // pop the sender state from the packet 157 pkt->senderState = senderState->saved; 158 delete senderState; 159 |
162 port->sendTiming(pkt); | 160 port->sendTimingResp(pkt); |
163 164 return true; 165} 166 167bool | 161 162 return true; 163} 164 165bool |
168RubyPort::M5Port::recvTiming(PacketPtr pkt) | 166RubyPort::M5Port::recvTimingReq(PacketPtr pkt) |
169{ 170 DPRINTF(RubyPort, 171 "Timing access caught for address %#x\n", pkt->getAddr()); 172 | 167{ 168 DPRINTF(RubyPort, 169 "Timing access caught for address %#x\n", pkt->getAddr()); 170 |
173 //dsm: based on SimpleTimingPort::recvTiming(pkt); | 171 //dsm: based on SimpleTimingPort::recvTimingReq(pkt); |
174 175 // The received packets should only be M5 requests, which should never 176 // get nacked. There used to be code to hanldle nacks here, but 177 // I'm pretty sure it didn't work correctly with the drain code, 178 // so that would need to be fixed if we ever added it back. | 172 173 // The received packets should only be M5 requests, which should never 174 // get nacked. There used to be code to hanldle nacks here, but 175 // I'm pretty sure it didn't work correctly with the drain code, 176 // so that would need to be fixed if we ever added it back. |
179 assert(pkt->isRequest()); | |
180 181 if (pkt->memInhibitAsserted()) { 182 warn("memInhibitAsserted???"); 183 // snooper will supply based on copy of packet 184 // still target's responsibility to delete packet 185 delete pkt; 186 return true; 187 } --- 520 unchanged lines hidden --- | 177 178 if (pkt->memInhibitAsserted()) { 179 warn("memInhibitAsserted???"); 180 // snooper will supply based on copy of packet 181 // still target's responsibility to delete packet 182 delete pkt; 183 return true; 184 } --- 520 unchanged lines hidden --- |