1/*
2 * Copyright 2014 Google, Inc.
3 * Copyright (c) 2010-2013 ARM Limited
4 * All rights reserved
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating

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

265 }
266 return dcache_pkt == NULL;
267}
268
269void
270TimingSimpleCPU::sendData(RequestPtr req, uint8_t *data, uint64_t *res,
271 bool read)
272{
273 PacketPtr pkt;
274 buildPacket(pkt, req, read);
273 PacketPtr pkt = buildPacket(req, read);
274 pkt->dataDynamic<uint8_t>(data);
275 if (req->getFlags().isSet(Request::NO_ACCESS)) {
276 assert(!dcache_pkt);
277 pkt->makeResponse();
278 completeDataAccess(pkt);
279 } else if (read) {
280 handleReadPacket(pkt);
281 } else {

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

348 traceData = NULL;
349 }
350
351 postExecute();
352
353 advanceInst(fault);
354}
355
357void
358TimingSimpleCPU::buildPacket(PacketPtr &pkt, RequestPtr req, bool read)
356PacketPtr
357TimingSimpleCPU::buildPacket(RequestPtr req, bool read)
358{
360 pkt = read ? Packet::createRead(req) : Packet::createWrite(req);
359 return read ? Packet::createRead(req) : Packet::createWrite(req);
360}
361
362void
363TimingSimpleCPU::buildSplitPacket(PacketPtr &pkt1, PacketPtr &pkt2,
364 RequestPtr req1, RequestPtr req2, RequestPtr req,
365 uint8_t *data, bool read)
366{
367 pkt1 = pkt2 = NULL;
368
369 assert(!req1->isMmappedIpr() && !req2->isMmappedIpr());
370
371 if (req->getFlags().isSet(Request::NO_ACCESS)) {
373 buildPacket(pkt1, req, read);
372 pkt1 = buildPacket(req, read);
373 return;
374 }
375
377 buildPacket(pkt1, req1, read);
378 buildPacket(pkt2, req2, read);
376 pkt1 = buildPacket(req1, read);
377 pkt2 = buildPacket(req2, read);
378
380 req->setPhys(req1->getPaddr(), req->getSize(), req1->getFlags(), dataMasterId());
379 PacketPtr pkt = new Packet(req, pkt1->cmd.responseCommand());
380
381 pkt->dataDynamic<uint8_t>(data);
382 pkt1->dataStatic<uint8_t>(data);
383 pkt2->dataStatic<uint8_t>(data + req1->getSize());
384
385 SplitMainSenderState * main_send_state = new SplitMainSenderState;
386 pkt->senderState = main_send_state;

--- 564 unchanged lines hidden ---