diff options
author | Prakash Ramrakhyani <prakash.ramrakhyani@arm.com> | 2013-10-31 13:41:13 -0500 |
---|---|---|
committer | Prakash Ramrakhyani <prakash.ramrakhyani@arm.com> | 2013-10-31 13:41:13 -0500 |
commit | 885656f2ed55a0a6432ae2beb960944a2a50efcc (patch) | |
tree | 7b511e9eb05b437de64306a93130a5c42481f155 /src | |
parent | 68dee58c38a6f861829522d47510c294459e7494 (diff) | |
download | gem5-885656f2ed55a0a6432ae2beb960944a2a50efcc.tar.xz |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/arch/arm/tlb.cc | 2 | ||||
-rw-r--r-- | src/mem/request.hh | 3 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/arch/arm/tlb.cc b/src/arch/arm/tlb.cc index 7a79725e1..107901f99 100644 --- a/src/arch/arm/tlb.cc +++ b/src/arch/arm/tlb.cc @@ -474,6 +474,8 @@ TLB::translateFs(RequestPtr req, ThreadContext *tc, Mode mode, bool is_priv = isPriv && !(flags & UserMode); req->setAsid(contextId.asid); + if (is_priv) + req->setFlags(Request::PRIVILEGED); DPRINTF(TLBVerbose, "CPSR is priv:%d UserMode:%d\n", isPriv, flags & UserMode); diff --git a/src/mem/request.hh b/src/mem/request.hh index f37e34dd4..a0ff50910 100644 --- a/src/mem/request.hh +++ b/src/mem/request.hh @@ -111,6 +111,8 @@ class Request static const FlagsType MMAPPED_IPR = 0x00002000; /** This request is a clear exclusive. */ 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. */ static const FlagsType NO_ACCESS = 0x00080000; @@ -539,6 +541,7 @@ class Request bool isInstFetch() const { return _flags.isSet(INST_FETCH); } bool isPrefetch() const { return _flags.isSet(PREFETCH); } bool isLLSC() const { return _flags.isSet(LLSC); } + bool isPriv() const { return _flags.isSet(PRIVILEGED); } bool isLocked() const { return _flags.isSet(LOCKED); } bool isSwap() const { return _flags.isSet(MEM_SWAP|MEM_SWAP_COND); } bool isCondSwap() const { return _flags.isSet(MEM_SWAP_COND); } |