46 #ifndef __ARCH_ARM_LOCKED_MEM_HH__
47 #define __ARCH_ARM_LOCKED_MEM_HH__
57 #include "debug/LLSC.hh"
70 DPRINTF(LLSC,
"%s: handling snoop for address: %#x locked: %d\n",
71 xc->getCpuPtr()->name(),pkt->
getAddr(),
80 DPRINTF(LLSC,
"%s: handling snoop for address: %#x locked addr: %#x\n",
81 xc->getCpuPtr()->name(),snoop_addr, locked_addr);
82 if (locked_addr == snoop_addr) {
83 DPRINTF(LLSC,
"%s: address match, clearing lock and signaling sev\n",
84 xc->getCpuPtr()->name());
88 xc->getCpuPtr()->wakeup(xc->threadId());
98 DPRINTF(LLSC,
"%s: Placing address %#x in monitor\n", xc->getCpuPtr()->name(),
106 DPRINTF(LLSC,
"%s: handling snoop lock hit address: %#x\n",
119 DPRINTF(LLSC,
"%s: handling locked write for address %#x in monitor\n",
120 xc->getCpuPtr()->name(), req->
getPaddr());
125 if (!lock_flag || (req->
getPaddr() & cacheBlockMask) != lock_addr) {
130 DPRINTF(LLSC,
"%s: clearing lock flag in handle locked write\n",
131 xc->getCpuPtr()->name());
136 int stCondFailures = xc->readStCondFailures();
138 xc->setStCondFailures(stCondFailures);
139 if (stCondFailures % 100000 == 0) {
140 warn(
"context %d: %d consecutive "
141 "store conditional failures\n",
142 xc->contextId(), stCondFailures);
void handleLockedSnoopHit(XC *xc)
void handleLockedSnoop(XC *xc, PacketPtr pkt, Addr cacheBlockMask)
void setExtraData(uint64_t extraData)
Accessor function for store conditional return value.
Declaration of a request, the overall memory request consisting of the parts of the request that are ...
bool handleLockedWrite(XC *xc, Request *req, Addr cacheBlockMask)
void handleLockedRead(XC *xc, Request *req)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
A Packet is used to encapsulate a transfer between two objects in the memory system (e...
Declaration of the Packet class.
bool isInvalidate() const