abstract_mem.cc (12748:ae5ce8e42de7) | abstract_mem.cc (12749:223c83ed9979) |
---|---|
1/* 2 * Copyright (c) 2010-2012,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 --- 185 unchanged lines hidden (view full) --- 194 return range; 195} 196 197// Add load-locked to tracking list. Should only be called if the 198// operation is a load and the LLSC flag is set. 199void 200AbstractMemory::trackLoadLocked(PacketPtr pkt) 201{ | 1/* 2 * Copyright (c) 2010-2012,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 --- 185 unchanged lines hidden (view full) --- 194 return range; 195} 196 197// Add load-locked to tracking list. Should only be called if the 198// operation is a load and the LLSC flag is set. 199void 200AbstractMemory::trackLoadLocked(PacketPtr pkt) 201{ |
202 RequestPtr req = pkt->req; | 202 const RequestPtr &req = pkt->req; |
203 Addr paddr = LockedAddr::mask(req->getPaddr()); 204 205 // first we check if we already have a locked addr for this 206 // xc. Since each xc only gets one, we just update the 207 // existing record with the new address. 208 list<LockedAddr>::iterator i; 209 210 for (i = lockedAddrList.begin(); i != lockedAddrList.end(); ++i) { --- 14 unchanged lines hidden (view full) --- 225 226// Called on *writes* only... both regular stores and 227// store-conditional operations. Check for conventional stores which 228// conflict with locked addresses, and for success/failure of store 229// conditionals. 230bool 231AbstractMemory::checkLockedAddrList(PacketPtr pkt) 232{ | 203 Addr paddr = LockedAddr::mask(req->getPaddr()); 204 205 // first we check if we already have a locked addr for this 206 // xc. Since each xc only gets one, we just update the 207 // existing record with the new address. 208 list<LockedAddr>::iterator i; 209 210 for (i = lockedAddrList.begin(); i != lockedAddrList.end(); ++i) { --- 14 unchanged lines hidden (view full) --- 225 226// Called on *writes* only... both regular stores and 227// store-conditional operations. Check for conventional stores which 228// conflict with locked addresses, and for success/failure of store 229// conditionals. 230bool 231AbstractMemory::checkLockedAddrList(PacketPtr pkt) 232{ |
233 RequestPtr req = pkt->req; | 233 const RequestPtr &req = pkt->req; |
234 Addr paddr = LockedAddr::mask(req->getPaddr()); 235 bool isLLSC = pkt->isLLSC(); 236 237 // Initialize return value. Non-conditional stores always 238 // succeed. Assume conditional stores will fail until proven 239 // otherwise. 240 bool allowStore = !isLLSC; 241 --- 219 unchanged lines hidden --- | 234 Addr paddr = LockedAddr::mask(req->getPaddr()); 235 bool isLLSC = pkt->isLLSC(); 236 237 // Initialize return value. Non-conditional stores always 238 // succeed. Assume conditional stores will fail until proven 239 // otherwise. 240 bool allowStore = !isLLSC; 241 --- 219 unchanged lines hidden --- |