diff options
author | Giacomo Gabrielli <Giacomo.Gabrielli@arm.com> | 2014-01-24 15:29:30 -0600 |
---|---|---|
committer | Giacomo Gabrielli <Giacomo.Gabrielli@arm.com> | 2014-01-24 15:29:30 -0600 |
commit | aefe9cc624902fe26535028f86ba3a45f555bcf0 (patch) | |
tree | 4d775f34b34eeafc0c596b95aa071cc52fb94283 /src/mem/cache/cache.hh | |
parent | 7f835a59f1c342eb1c170973ad53c493cc38e978 (diff) | |
download | gem5-aefe9cc624902fe26535028f86ba3a45f555bcf0.tar.xz |
mem: Add support for a security bit in the memory system
This patch adds the basic building blocks required to support e.g. ARM
TrustZone by discerning secure and non-secure memory accesses.
Diffstat (limited to 'src/mem/cache/cache.hh')
-rw-r--r-- | src/mem/cache/cache.hh | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/src/mem/cache/cache.hh b/src/mem/cache/cache.hh index ab884372c..60f3650e7 100644 --- a/src/mem/cache/cache.hh +++ b/src/mem/cache/cache.hh @@ -209,12 +209,13 @@ class Cache : public BaseCache void cmpAndSwap(BlkType *blk, PacketPtr pkt); /** - * Find a block frame for new block at address addr, assuming that - * the block is not currently in the cache. Append writebacks if - * any to provided packet list. Return free block frame. May - * return NULL if there are no replaceable blocks at the moment. + * Find a block frame for new block at address addr targeting the + * given security space, assuming that the block is not currently + * in the cache. Append writebacks if any to provided packet + * list. Return free block frame. May return NULL if there are + * no replaceable blocks at the moment. */ - BlkType *allocateBlock(Addr addr, PacketList &writebacks); + BlkType *allocateBlock(Addr addr, bool is_secure, PacketList &writebacks); /** * Populates a cache block and handles all outstanding requests for the @@ -384,16 +385,16 @@ class Cache : public BaseCache return mshrQueue.allocated != 0; } - CacheBlk *findBlock(Addr addr) const { - return tags->findBlock(addr); + CacheBlk *findBlock(Addr addr, bool is_secure) const { + return tags->findBlock(addr, is_secure); } - bool inCache(Addr addr) const { - return (tags->findBlock(addr) != 0); + bool inCache(Addr addr, bool is_secure) const { + return (tags->findBlock(addr, is_secure) != 0); } - bool inMissQueue(Addr addr) const { - return (mshrQueue.findMatch(addr) != 0); + bool inMissQueue(Addr addr, bool is_secure) const { + return (mshrQueue.findMatch(addr, is_secure) != 0); } /** |