AbstractController.cc (12680:91f4d6668b4f) | AbstractController.cc (12749:223c83ed9979) |
---|---|
1/* 2 * Copyright (c) 2017 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 --- 226 unchanged lines hidden (view full) --- 235{ 236 return memoryPort; 237} 238 239void 240AbstractController::queueMemoryRead(const MachineID &id, Addr addr, 241 Cycles latency) 242{ | 1/* 2 * Copyright (c) 2017 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 --- 226 unchanged lines hidden (view full) --- 235{ 236 return memoryPort; 237} 238 239void 240AbstractController::queueMemoryRead(const MachineID &id, Addr addr, 241 Cycles latency) 242{ |
243 RequestPtr req = new Request(addr, RubySystem::getBlockSizeBytes(), 0, 244 m_masterId); | 243 RequestPtr req = std::make_shared<Request>( 244 addr, RubySystem::getBlockSizeBytes(), 0, m_masterId); |
245 246 PacketPtr pkt = Packet::createRead(req); 247 uint8_t *newData = new uint8_t[RubySystem::getBlockSizeBytes()]; 248 pkt->dataDynamic(newData); 249 250 SenderState *s = new SenderState(id); 251 pkt->pushSenderState(s); 252 --- 6 unchanged lines hidden (view full) --- 259 260 memoryPort.schedTimingReq(pkt, clockEdge(latency)); 261} 262 263void 264AbstractController::queueMemoryWrite(const MachineID &id, Addr addr, 265 Cycles latency, const DataBlock &block) 266{ | 245 246 PacketPtr pkt = Packet::createRead(req); 247 uint8_t *newData = new uint8_t[RubySystem::getBlockSizeBytes()]; 248 pkt->dataDynamic(newData); 249 250 SenderState *s = new SenderState(id); 251 pkt->pushSenderState(s); 252 --- 6 unchanged lines hidden (view full) --- 259 260 memoryPort.schedTimingReq(pkt, clockEdge(latency)); 261} 262 263void 264AbstractController::queueMemoryWrite(const MachineID &id, Addr addr, 265 Cycles latency, const DataBlock &block) 266{ |
267 RequestPtr req = new Request(addr, RubySystem::getBlockSizeBytes(), 0, 268 m_masterId); | 267 RequestPtr req = std::make_shared<Request>( 268 addr, RubySystem::getBlockSizeBytes(), 0, m_masterId); |
269 270 PacketPtr pkt = Packet::createWrite(req); 271 uint8_t *newData = new uint8_t[RubySystem::getBlockSizeBytes()]; 272 pkt->dataDynamic(newData); 273 memcpy(newData, block.getData(0, RubySystem::getBlockSizeBytes()), 274 RubySystem::getBlockSizeBytes()); 275 276 SenderState *s = new SenderState(id); --- 10 unchanged lines hidden (view full) --- 287 memoryPort.schedTimingReq(pkt, clockEdge(latency)); 288} 289 290void 291AbstractController::queueMemoryWritePartial(const MachineID &id, Addr addr, 292 Cycles latency, 293 const DataBlock &block, int size) 294{ | 269 270 PacketPtr pkt = Packet::createWrite(req); 271 uint8_t *newData = new uint8_t[RubySystem::getBlockSizeBytes()]; 272 pkt->dataDynamic(newData); 273 memcpy(newData, block.getData(0, RubySystem::getBlockSizeBytes()), 274 RubySystem::getBlockSizeBytes()); 275 276 SenderState *s = new SenderState(id); --- 10 unchanged lines hidden (view full) --- 287 memoryPort.schedTimingReq(pkt, clockEdge(latency)); 288} 289 290void 291AbstractController::queueMemoryWritePartial(const MachineID &id, Addr addr, 292 Cycles latency, 293 const DataBlock &block, int size) 294{ |
295 RequestPtr req = new Request(addr, size, 0, m_masterId); | 295 RequestPtr req = std::make_shared<Request>(addr, size, 0, m_masterId); |
296 297 PacketPtr pkt = Packet::createWrite(req); 298 uint8_t *newData = new uint8_t[size]; 299 pkt->dataDynamic(newData); 300 memcpy(newData, block.getData(getOffset(addr), size), size); 301 302 SenderState *s = new SenderState(id); 303 pkt->pushSenderState(s); --- 47 unchanged lines hidden (view full) --- 351 } else if (pkt->isWrite()) { 352 (*msg).m_Type = MemoryRequestType_MEMORY_WB; 353 (*msg).m_MessageSize = MessageSizeType_Writeback_Control; 354 } else { 355 panic("Incorrect packet type received from memory controller!"); 356 } 357 358 getMemoryQueue()->enqueue(msg, clockEdge(), cyclesToTicks(Cycles(1))); | 296 297 PacketPtr pkt = Packet::createWrite(req); 298 uint8_t *newData = new uint8_t[size]; 299 pkt->dataDynamic(newData); 300 memcpy(newData, block.getData(getOffset(addr), size), size); 301 302 SenderState *s = new SenderState(id); 303 pkt->pushSenderState(s); --- 47 unchanged lines hidden (view full) --- 351 } else if (pkt->isWrite()) { 352 (*msg).m_Type = MemoryRequestType_MEMORY_WB; 353 (*msg).m_MessageSize = MessageSizeType_Writeback_Control; 354 } else { 355 panic("Incorrect packet type received from memory controller!"); 356 } 357 358 getMemoryQueue()->enqueue(msg, clockEdge(), cyclesToTicks(Cycles(1))); |
359 delete pkt->req; | |
360 delete pkt; 361} 362 363Tick 364AbstractController::recvAtomic(PacketPtr pkt) 365{ 366 return ticksToCycles(memoryPort.sendAtomic(pkt)); 367} --- 25 unchanged lines hidden --- | 359 delete pkt; 360} 361 362Tick 363AbstractController::recvAtomic(PacketPtr pkt) 364{ 365 return ticksToCycles(memoryPort.sendAtomic(pkt)); 366} --- 25 unchanged lines hidden --- |