summaryrefslogtreecommitdiff
path: root/src/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm')
-rw-r--r--src/arch/arm/table_walker.cc2
-rw-r--r--src/arch/arm/table_walker.hh39
2 files changed, 37 insertions, 4 deletions
diff --git a/src/arch/arm/table_walker.cc b/src/arch/arm/table_walker.cc
index 591c16747..dfb406543 100644
--- a/src/arch/arm/table_walker.cc
+++ b/src/arch/arm/table_walker.cc
@@ -51,7 +51,7 @@ using namespace ArmISA;
TableWalker::TableWalker(const Params *p)
: MemObject(p), port(this, params()->sys, params()->min_backoff,
- params()->max_backoff, true),
+ params()->max_backoff),
tlb(NULL), currState(NULL), pending(false),
masterId(p->sys->getMasterId(name())),
doL1DescEvent(this), doL2DescEvent(this), doProcessEvent(this)
diff --git a/src/arch/arm/table_walker.hh b/src/arch/arm/table_walker.hh
index a6ff2585b..36adc8a82 100644
--- a/src/arch/arm/table_walker.hh
+++ b/src/arch/arm/table_walker.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2010 ARM Limited
+ * Copyright (c) 2010-2012 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -51,7 +51,6 @@
#include "sim/eventq.hh"
#include "sim/fault_fwd.hh"
-class DmaPort;
class ThreadContext;
namespace ArmISA {
@@ -260,6 +259,40 @@ class TableWalker : public MemObject
};
+ protected:
+
+ /**
+ * A snooping DMA port that currently does nothing besides
+ * extending the DMA port to accept snoops without complaining.
+ */
+ class SnoopingDmaPort : public DmaPort
+ {
+
+ protected:
+
+ virtual void recvTimingSnoopReq(PacketPtr pkt)
+ { }
+
+ virtual Tick recvAtomicSnoop(PacketPtr pkt)
+ { return 0; }
+
+ virtual void recvFunctionalSnoop(PacketPtr pkt)
+ { }
+
+ virtual bool isSnooping() const { return true; }
+
+ public:
+
+ /**
+ * A snooping DMA port merely calls the construtor of the DMA
+ * port.
+ */
+ SnoopingDmaPort(MemObject *dev, System *s, Tick min_backoff,
+ Tick max_backoff) :
+ DmaPort(dev, s, min_backoff, max_backoff)
+ { }
+ };
+
struct WalkerState //: public SimObject
{
/** Thread context that we're doing the walk for */
@@ -329,7 +362,7 @@ class TableWalker : public MemObject
/** Port to issue translation requests from */
- DmaPort port;
+ SnoopingDmaPort port;
/** TLB that is initiating these table walks */
TLB *tlb;