48 #ifndef __ARCH_RISCV_LOCKED_MEM_HH__
49 #define __ARCH_RISCV_LOCKED_MEM_HH__
53 #include "arch/registers.hh"
56 #include "debug/LLSC.hh"
72 template <
class XC>
inline void
78 DPRINTF(LLSC,
"Locked snoop on address %x.\n", snoop_addr);
84 template <
class XC>
inline void
88 DPRINTF(LLSC,
"[cid:%d]: Reserved address %x.\n",
92 template <
class XC>
inline void
96 template <
class XC>
inline bool
115 int stCondFailures = xc->readStCondFailures();
116 xc->setStCondFailures(++stCondFailures);
118 warn(
"%i: context %d: %d consecutive SC failures.\n",
119 curTick(), xc->contextId(), stCondFailures);
131 #endif // __ARCH_RISCV_LOCKED_MEM_HH__
bool isUncacheable() const
Accessor functions for flags.
std::stack< Addr > locked_addrs
void handleLockedRead(XC *xc, Request *req)
ContextID contextId() const
Accessor function for context ID.
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)
Tick curTick()
The current simulated tick.
void handleLockedSnoop(XC *xc, PacketPtr pkt, Addr cacheBlockMask)
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...
void handleLockedSnoopHit(XC *xc)
Declaration of the Packet class.