abstract_mem.cc (9931:086fc5c038af) | abstract_mem.cc (10102:b5de69974a2e) |
---|---|
1/* 2 * Copyright (c) 2010-2012 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 --- 30 unchanged lines hidden (view full) --- 39 * 40 * Authors: Ron Dreslinski 41 * Ali Saidi 42 * Andreas Hansson 43 */ 44 45#include "arch/registers.hh" 46#include "config/the_isa.hh" | 1/* 2 * Copyright (c) 2010-2012 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 --- 30 unchanged lines hidden (view full) --- 39 * 40 * Authors: Ron Dreslinski 41 * Ali Saidi 42 * Andreas Hansson 43 */ 44 45#include "arch/registers.hh" 46#include "config/the_isa.hh" |
47#include "cpu/base.hh" 48#include "cpu/thread_context.hh" |
|
47#include "debug/LLSC.hh" 48#include "debug/MemoryAccess.hh" 49#include "mem/abstract_mem.hh" 50#include "mem/packet_access.hh" 51#include "sim/system.hh" 52 53using namespace std; 54 --- 200 unchanged lines hidden (view full) --- 255 // We write address paddr. However, there may be several entries with a 256 // reservation on this address (for other contextIds) and they must all 257 // be removed. 258 i = lockedAddrList.begin(); 259 while (i != lockedAddrList.end()) { 260 if (i->addr == paddr) { 261 DPRINTF(LLSC, "Erasing lock record: context %d addr %#x\n", 262 i->contextId, paddr); | 49#include "debug/LLSC.hh" 50#include "debug/MemoryAccess.hh" 51#include "mem/abstract_mem.hh" 52#include "mem/packet_access.hh" 53#include "sim/system.hh" 54 55using namespace std; 56 --- 200 unchanged lines hidden (view full) --- 257 // We write address paddr. However, there may be several entries with a 258 // reservation on this address (for other contextIds) and they must all 259 // be removed. 260 i = lockedAddrList.begin(); 261 while (i != lockedAddrList.end()) { 262 if (i->addr == paddr) { 263 DPRINTF(LLSC, "Erasing lock record: context %d addr %#x\n", 264 i->contextId, paddr); |
265 // For ARM, a spinlock would typically include a Wait 266 // For Event (WFE) to conserve energy. The ARMv8 267 // architecture specifies that an event is 268 // automatically generated when clearing the exclusive 269 // monitor to wake up the processor in WFE. 270 system()->getThreadContext(i->contextId)->getCpuPtr()->wakeup(); |
|
263 i = lockedAddrList.erase(i); 264 } else { 265 i++; 266 } 267 } 268 } 269 270 return allowStore; --- 152 unchanged lines hidden --- | 271 i = lockedAddrList.erase(i); 272 } else { 273 i++; 274 } 275 } 276 } 277 278 return allowStore; --- 152 unchanged lines hidden --- |