42 #ifndef __ARCH_ARM_LOCKED_MEM_HH__
43 #define __ARCH_ARM_LOCKED_MEM_HH__
53 #include "debug/LLSC.hh"
69 DPRINTF(LLSC,
"%s: handling snoop for address: %#x locked: %d\n",
70 xc->getCpuPtr()->name(),pkt->
getAddr(),
79 DPRINTF(LLSC,
"%s: handling snoop for address: %#x locked addr: %#x\n",
80 xc->getCpuPtr()->name(),snoop_addr, locked_addr);
81 if (locked_addr == snoop_addr) {
82 DPRINTF(LLSC,
"%s: address match, clearing lock and signaling sev\n",
83 xc->getCpuPtr()->name());
97 DPRINTF(LLSC,
"%s: Placing address %#x in monitor\n", xc->getCpuPtr()->name(),
105 DPRINTF(LLSC,
"%s: handling snoop lock hit address: %#x\n",
118 DPRINTF(LLSC,
"%s: handling locked write for address %#x in monitor\n",
119 xc->getCpuPtr()->name(), req->getPaddr());
124 if (!lock_flag || (req->getPaddr() & cacheBlockMask) != lock_addr) {
127 req->setExtraData(0);
129 DPRINTF(LLSC,
"%s: clearing lock flag in handle locked write\n",
130 xc->getCpuPtr()->name());
135 int stCondFailures = xc->readStCondFailures();
137 xc->setStCondFailures(stCondFailures);
138 if (stCondFailures % 100000 == 0) {
139 warn(
"context %d: %d consecutive "
140 "store conditional failures\n",
141 xc->contextId(), stCondFailures);
158 DPRINTF(LLSC,
"Clearing lock and signaling sev\n");