ExtSlave.cc (10779:3e986011e99e) | ExtSlave.cc (11158:a84eecaaa866) |
---|---|
1// Copyright (c) 2015 ARM Limited 2// All rights reserved. 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 112 unchanged lines hidden (view full) --- 121 122 auto ev = new MemEvent(comp, pkt->getAddr(), pkt->getAddr(), cmd); 123 ev->setPayload(pkt->getSize(), pkt->getPtr<uint8_t>()); 124 if ((::MemCmd::Command)pkt->cmd.toInt() == ::MemCmd::LoadLockedReq) 125 ev->setLoadLink(); 126 else if ((::MemCmd::Command)pkt->cmd.toInt() == ::MemCmd::StoreCondReq) 127 ev->setStoreConditional(); 128 | 1// Copyright (c) 2015 ARM Limited 2// All rights reserved. 3// 4// The license below extends only to copyright in the software and shall 5// not be construed as granting a license to any other intellectual 6// property including but not limited to intellectual property relating 7// to a hardware implementation of the functionality of the software 8// licensed hereunder. You may use the software subject to the license --- 112 unchanged lines hidden (view full) --- 121 122 auto ev = new MemEvent(comp, pkt->getAddr(), pkt->getAddr(), cmd); 123 ev->setPayload(pkt->getSize(), pkt->getPtr<uint8_t>()); 124 if ((::MemCmd::Command)pkt->cmd.toInt() == ::MemCmd::LoadLockedReq) 125 ev->setLoadLink(); 126 else if ((::MemCmd::Command)pkt->cmd.toInt() == ::MemCmd::StoreCondReq) 127 ev->setStoreConditional(); 128 |
129 if (pkt->req->isLocked()) ev->setFlag(MemEvent::F_LOCKED); | 129 if (pkt->req->isLockedRMW()) ev->setFlag(MemEvent::F_LOCKED); |
130 if (pkt->req->isUncacheable()) ev->setFlag(MemEvent::F_NONCACHEABLE); 131 if (pkt->req->hasContextId()) ev->setGroupId(pkt->req->contextId()); 132// Prefetches not working with SST; it maybe be dropping them, treating them 133// as not deserving of responses, or something else -- not sure yet. 134// ev->setPrefetchFlag(pkt->req->isPrefetch()); 135 136 if (simPhase == INIT) { 137 link->sendInitData(ev); --- 41 unchanged lines hidden (view full) --- 179 } 180 } else { // we can handle unexpected invalidates, but nothing else. 181 Command cmd = event->getCmd(); 182 assert(cmd == Inv); 183 184 // make Req/Pkt for Snoop/no response needed 185 // presently no consideration for masterId, packet type, flags... 186 RequestPtr req = new Request(event->getAddr(), event->getSize(), 0, 0); | 130 if (pkt->req->isUncacheable()) ev->setFlag(MemEvent::F_NONCACHEABLE); 131 if (pkt->req->hasContextId()) ev->setGroupId(pkt->req->contextId()); 132// Prefetches not working with SST; it maybe be dropping them, treating them 133// as not deserving of responses, or something else -- not sure yet. 134// ev->setPrefetchFlag(pkt->req->isPrefetch()); 135 136 if (simPhase == INIT) { 137 link->sendInitData(ev); --- 41 unchanged lines hidden (view full) --- 179 } 180 } else { // we can handle unexpected invalidates, but nothing else. 181 Command cmd = event->getCmd(); 182 assert(cmd == Inv); 183 184 // make Req/Pkt for Snoop/no response needed 185 // presently no consideration for masterId, packet type, flags... 186 RequestPtr req = new Request(event->getAddr(), event->getSize(), 0, 0); |
187 auto pkt = new Packet(req, ::MemCmd::InvalidationReq); | 187 auto pkt = new Packet(req, ::MemCmd::InvalidateReq); |
188 189 // Clear out bus delay notifications 190 pkt->headerDelay = pkt->payloadDelay = 0; 191 192 sendTimingSnoopReq(pkt); 193 } 194 delete event; 195} 196 197void 198ExtSlave::recvRespRetry() 199{ 200 while (blocked() && sendTimingResp(respQ.front())) { 201 respQ.pop_front(); 202 } 203} | 188 189 // Clear out bus delay notifications 190 pkt->headerDelay = pkt->payloadDelay = 0; 191 192 sendTimingSnoopReq(pkt); 193 } 194 delete event; 195} 196 197void 198ExtSlave::recvRespRetry() 199{ 200 while (blocked() && sendTimingResp(respQ.front())) { 201 respQ.pop_front(); 202 } 203} |