summaryrefslogtreecommitdiff
path: root/src/cpu/minor
diff options
context:
space:
mode:
authorAndreas Hansson <andreas.hansson@arm.com>2016-02-10 04:08:24 -0500
committerAndreas Hansson <andreas.hansson@arm.com>2016-02-10 04:08:24 -0500
commitfbdeb6031664d71e19a25f51b6ee882d803dac30 (patch)
tree0a3fa9a980e9b9a1013b3aff37080b045192b650 /src/cpu/minor
parentbead7f249a71f8b15ae92b0df9822abb52ca7323 (diff)
downloadgem5-fbdeb6031664d71e19a25f51b6ee882d803dac30.tar.xz
mem: Deduce if cache should forward snoops
This patch changes how the cache determines if snoops should be forwarded from the memory side to the CPU side. Instead of having a parameter, the cache now looks at the port connected on the CPU side, and if it is a snooping port, then snoops are forwarded. Less error prone, and less parameters to worry about. The patch also tidies up the CPU classes to ensure that their I-side port is not snooping by removing overrides to the snoop request handler, such that snoop requests will panic via the default MasterPort implement
Diffstat (limited to 'src/cpu/minor')
-rw-r--r--src/cpu/minor/cpu.hh3
-rw-r--r--src/cpu/minor/lsq.hh4
2 files changed, 4 insertions, 3 deletions
diff --git a/src/cpu/minor/cpu.hh b/src/cpu/minor/cpu.hh
index 82dac6aa9..dad015e89 100644
--- a/src/cpu/minor/cpu.hh
+++ b/src/cpu/minor/cpu.hh
@@ -107,9 +107,6 @@ class MinorCPU : public BaseCPU
: MasterPort(name_, &cpu_), cpu(cpu_)
{ }
- protected:
- /** Snooping a coherence request, do nothing. */
- virtual void recvTimingSnoopReq(PacketPtr pkt) { }
};
protected:
diff --git a/src/cpu/minor/lsq.hh b/src/cpu/minor/lsq.hh
index 8a7d78216..33d7c506b 100644
--- a/src/cpu/minor/lsq.hh
+++ b/src/cpu/minor/lsq.hh
@@ -103,8 +103,12 @@ class LSQ : public Named
void recvReqRetry() { lsq.recvReqRetry(); }
+ bool isSnooping() const override { return true; }
+
void recvTimingSnoopReq(PacketPtr pkt)
{ return lsq.recvTimingSnoopReq(pkt); }
+
+ void recvFunctionalSnoop(PacketPtr pkt) { }
};
DcachePort dcachePort;