diff options
author | Ron Dreslinski <rdreslin@umich.edu> | 2006-08-15 16:21:46 -0400 |
---|---|---|
committer | Ron Dreslinski <rdreslin@umich.edu> | 2006-08-15 16:21:46 -0400 |
commit | d5ac1cb51f2e08531794e1dcbb17e47f51041c4f (patch) | |
tree | 79d49fad55c832837f4cf2a8453df72ba83d1bee /src/mem/cache/tags/split_lifo.cc | |
parent | d0d0d7b636c20ad0fafec885c246711ec4218fff (diff) | |
download | gem5-d5ac1cb51f2e08531794e1dcbb17e47f51041c4f.tar.xz |
Pulled out changes to fix EIO programs with caches. Also fixes any translatingPort read/write Blob function problems with caches.
-Basically removed the ASID from places it is no longer needed due to PageTable
src/mem/cache/cache.hh:
src/mem/cache/cache_impl.hh:
src/mem/cache/miss/blocking_buffer.cc:
src/mem/cache/miss/blocking_buffer.hh:
src/mem/cache/miss/miss_queue.cc:
src/mem/cache/miss/miss_queue.hh:
src/mem/cache/miss/mshr.cc:
src/mem/cache/miss/mshr.hh:
src/mem/cache/miss/mshr_queue.cc:
src/mem/cache/miss/mshr_queue.hh:
src/mem/cache/prefetch/base_prefetcher.cc:
src/mem/cache/prefetch/base_prefetcher.hh:
src/mem/cache/tags/fa_lru.cc:
src/mem/cache/tags/fa_lru.hh:
src/mem/cache/tags/iic.cc:
src/mem/cache/tags/iic.hh:
src/mem/cache/tags/lru.cc:
src/mem/cache/tags/lru.hh:
src/mem/cache/tags/split.cc:
src/mem/cache/tags/split.hh:
src/mem/cache/tags/split_lifo.cc:
src/mem/cache/tags/split_lifo.hh:
src/mem/cache/tags/split_lru.cc:
src/mem/cache/tags/split_lru.hh:
Remove asid where it wasn't neccesary anymore due to Page Table
--HG--
extra : convert_revision : ab8bbf4cc47b9eaefa9cdfa790881a21d0e7bf28
Diffstat (limited to 'src/mem/cache/tags/split_lifo.cc')
-rw-r--r-- | src/mem/cache/tags/split_lifo.cc | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/src/mem/cache/tags/split_lifo.cc b/src/mem/cache/tags/split_lifo.cc index f6493fdd2..6fcbf3597 100644 --- a/src/mem/cache/tags/split_lifo.cc +++ b/src/mem/cache/tags/split_lifo.cc @@ -44,7 +44,7 @@ using namespace std; SplitBlk* -LIFOSet::findBlk(int asid, Addr tag) const +LIFOSet::findBlk(Addr tag) const { for (SplitBlk *blk = firstIn; blk != NULL; blk = blk->next) { if (blk->tag == tag && blk->isValid()) { @@ -216,21 +216,21 @@ SplitLIFO::regStats(const std::string &name) // probe cache for presence of given block. bool -SplitLIFO::probe(int asid, Addr addr) const +SplitLIFO::probe(Addr addr) const { Addr tag = extractTag(addr); unsigned myset = extractSet(addr); - SplitBlk* blk = sets[myset].findBlk(asid, tag); + SplitBlk* blk = sets[myset].findBlk(tag); return (blk != NULL); } SplitBlk* -SplitLIFO::findBlock(Addr addr, int asid, int &lat) +SplitLIFO::findBlock(Addr addr, int &lat) { Addr tag = extractTag(addr); unsigned set = extractSet(addr); - SplitBlk *blk = sets[set].findBlk(asid, tag); + SplitBlk *blk = sets[set].findBlk(tag); lat = hitLatency; @@ -258,11 +258,10 @@ SplitBlk* SplitLIFO::findBlock(Packet * &pkt, int &lat) { Addr addr = pkt->getAddr(); - int asid = pkt->req->getAsid(); Addr tag = extractTag(addr); unsigned set = extractSet(addr); - SplitBlk *blk = sets[set].findBlk(asid, tag); + SplitBlk *blk = sets[set].findBlk(tag); if (blk) { DPRINTF(Split, "Found LIFO blk %#x in set %d, with tag %#x\n", @@ -282,11 +281,11 @@ SplitLIFO::findBlock(Packet * &pkt, int &lat) } SplitBlk* -SplitLIFO::findBlock(Addr addr, int asid) const +SplitLIFO::findBlock(Addr addr) const { Addr tag = extractTag(addr); unsigned set = extractSet(addr); - SplitBlk *blk = sets[set].findBlk(asid, tag); + SplitBlk *blk = sets[set].findBlk(tag); return blk; } @@ -336,9 +335,9 @@ SplitLIFO::findReplacement(Packet * &pkt, PacketList &writebacks, } void -SplitLIFO::invalidateBlk(int asid, Addr addr) +SplitLIFO::invalidateBlk(Addr addr) { - SplitBlk *blk = findBlock(addr, asid); + SplitBlk *blk = findBlock(addr); if (blk) { blk->status = 0; blk->isTouched = false; @@ -348,15 +347,15 @@ SplitLIFO::invalidateBlk(int asid, Addr addr) } void -SplitLIFO::doCopy(Addr source, Addr dest, int asid, PacketList &writebacks) +SplitLIFO::doCopy(Addr source, Addr dest, PacketList &writebacks) { //Copy Unsuported for now #if 0 assert(source == blkAlign(source)); assert(dest == blkAlign(dest)); - SplitBlk *source_blk = findBlock(source, asid); + SplitBlk *source_blk = findBlock(source); assert(source_blk); - SplitBlk *dest_blk = findBlock(dest, asid); + SplitBlk *dest_blk = findBlock(dest); if (dest_blk == NULL) { // Need to do a replacement Packet * pkt = new Packet(); @@ -367,7 +366,6 @@ SplitLIFO::doCopy(Addr source, Addr dest, int asid, PacketList &writebacks) // Need to writeback data. pkt = buildWritebackReq(regenerateBlkAddr(dest_blk->tag, dest_blk->set), - dest_blk->req->asid, dest_blk->xc, blkSize, (cache->doData())?dest_blk->data:0, @@ -375,7 +373,6 @@ SplitLIFO::doCopy(Addr source, Addr dest, int asid, PacketList &writebacks) writebacks.push_back(pkt); } dest_blk->tag = extractTag(dest); - dest_blk->req->asid = asid; /** * @todo Do we need to pass in the execution context, or can we * assume its the same? |