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 ---