From 8aaa39e93dfe000ad423b585e78a4c2ee7418363 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Sun, 12 Feb 2012 16:07:38 -0600 Subject: mem: Add a master ID to each request object. This change adds a master id to each request object which can be used identify every device in the system that is capable of issuing a request. This is part of the way to removing the numCpus+1 stats in the cache and replacing them with the master ids. This is one of a series of changes that make way for the stats output to be changed to python. --- src/cpu/simple/atomic.cc | 4 ++-- src/cpu/simple/base.cc | 3 ++- src/cpu/simple/timing.cc | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src/cpu/simple') diff --git a/src/cpu/simple/atomic.cc b/src/cpu/simple/atomic.cc index 24e2f1eb8..4b243e862 100644 --- a/src/cpu/simple/atomic.cc +++ b/src/cpu/simple/atomic.cc @@ -269,7 +269,7 @@ AtomicSimpleCPU::readMem(Addr addr, uint8_t * data, dcache_latency = 0; while (1) { - req->setVirt(0, addr, size, flags, thread->pcState().instAddr()); + req->setVirt(0, addr, size, flags, dataMasterId(), thread->pcState().instAddr()); // translate to physical address Fault fault = thread->dtb->translateAtomic(req, tc, BaseTLB::Read); @@ -357,7 +357,7 @@ AtomicSimpleCPU::writeMem(uint8_t *data, unsigned size, dcache_latency = 0; while(1) { - req->setVirt(0, addr, size, flags, thread->pcState().instAddr()); + req->setVirt(0, addr, size, flags, dataMasterId(), thread->pcState().instAddr()); // translate to physical address Fault fault = thread->dtb->translateAtomic(req, tc, BaseTLB::Write); diff --git a/src/cpu/simple/base.cc b/src/cpu/simple/base.cc index 02758ac04..9035ce973 100644 --- a/src/cpu/simple/base.cc +++ b/src/cpu/simple/base.cc @@ -346,7 +346,8 @@ BaseSimpleCPU::setupFetchRequest(Request *req) DPRINTF(Fetch, "Fetch: PC:%08p\n", instAddr); Addr fetchPC = (instAddr & PCMask) + fetchOffset; - req->setVirt(0, fetchPC, sizeof(MachInst), Request::INST_FETCH, instAddr); + req->setVirt(0, fetchPC, sizeof(MachInst), Request::INST_FETCH, instMasterId(), + instAddr); } diff --git a/src/cpu/simple/timing.cc b/src/cpu/simple/timing.cc index 6cf7c582c..d71a96580 100644 --- a/src/cpu/simple/timing.cc +++ b/src/cpu/simple/timing.cc @@ -385,7 +385,7 @@ TimingSimpleCPU::buildSplitPacket(PacketPtr &pkt1, PacketPtr &pkt2, buildPacket(pkt1, req1, read); buildPacket(pkt2, req2, read); - req->setPhys(req1->getPaddr(), req->getSize(), req1->getFlags()); + req->setPhys(req1->getPaddr(), req->getSize(), req1->getFlags(), dataMasterId()); PacketPtr pkt = new Packet(req, pkt1->cmd.responseCommand(), Packet::Broadcast); @@ -418,7 +418,7 @@ TimingSimpleCPU::readMem(Addr addr, uint8_t *data, } RequestPtr req = new Request(asid, addr, size, - flags, pc, _cpuId, tid); + flags, dataMasterId(), pc, _cpuId, tid); Addr split_addr = roundDown(addr + size - 1, block_size); assert(split_addr <= addr || split_addr - addr < block_size); @@ -488,7 +488,7 @@ TimingSimpleCPU::writeMem(uint8_t *data, unsigned size, } RequestPtr req = new Request(asid, addr, size, - flags, pc, _cpuId, tid); + flags, dataMasterId(), pc, _cpuId, tid); Addr split_addr = roundDown(addr + size - 1, block_size); assert(split_addr <= addr || split_addr - addr < block_size); -- cgit v1.2.3