mem: Add privilege info to request class
This patch adds a flag in the request class that indicates if the request was made in privileged mode.
This commit is contained in:
parent
68dee58c38
commit
885656f2ed
2 changed files with 5 additions and 0 deletions
|
@ -474,6 +474,8 @@ TLB::translateFs(RequestPtr req, ThreadContext *tc, Mode mode,
|
||||||
bool is_priv = isPriv && !(flags & UserMode);
|
bool is_priv = isPriv && !(flags & UserMode);
|
||||||
|
|
||||||
req->setAsid(contextId.asid);
|
req->setAsid(contextId.asid);
|
||||||
|
if (is_priv)
|
||||||
|
req->setFlags(Request::PRIVILEGED);
|
||||||
|
|
||||||
DPRINTF(TLBVerbose, "CPSR is priv:%d UserMode:%d\n",
|
DPRINTF(TLBVerbose, "CPSR is priv:%d UserMode:%d\n",
|
||||||
isPriv, flags & UserMode);
|
isPriv, flags & UserMode);
|
||||||
|
|
|
@ -111,6 +111,8 @@ class Request
|
||||||
static const FlagsType MMAPPED_IPR = 0x00002000;
|
static const FlagsType MMAPPED_IPR = 0x00002000;
|
||||||
/** This request is a clear exclusive. */
|
/** This request is a clear exclusive. */
|
||||||
static const FlagsType CLEAR_LL = 0x00004000;
|
static const FlagsType CLEAR_LL = 0x00004000;
|
||||||
|
/** This request is made in privileged mode. */
|
||||||
|
static const FlagsType PRIVILEGED = 0x00008000;
|
||||||
|
|
||||||
/** The request should not cause a memory access. */
|
/** The request should not cause a memory access. */
|
||||||
static const FlagsType NO_ACCESS = 0x00080000;
|
static const FlagsType NO_ACCESS = 0x00080000;
|
||||||
|
@ -539,6 +541,7 @@ class Request
|
||||||
bool isInstFetch() const { return _flags.isSet(INST_FETCH); }
|
bool isInstFetch() const { return _flags.isSet(INST_FETCH); }
|
||||||
bool isPrefetch() const { return _flags.isSet(PREFETCH); }
|
bool isPrefetch() const { return _flags.isSet(PREFETCH); }
|
||||||
bool isLLSC() const { return _flags.isSet(LLSC); }
|
bool isLLSC() const { return _flags.isSet(LLSC); }
|
||||||
|
bool isPriv() const { return _flags.isSet(PRIVILEGED); }
|
||||||
bool isLocked() const { return _flags.isSet(LOCKED); }
|
bool isLocked() const { return _flags.isSet(LOCKED); }
|
||||||
bool isSwap() const { return _flags.isSet(MEM_SWAP|MEM_SWAP_COND); }
|
bool isSwap() const { return _flags.isSet(MEM_SWAP|MEM_SWAP_COND); }
|
||||||
bool isCondSwap() const { return _flags.isSet(MEM_SWAP_COND); }
|
bool isCondSwap() const { return _flags.isSet(MEM_SWAP_COND); }
|
||||||
|
|
Loading…
Reference in a new issue