summaryrefslogtreecommitdiff
path: root/src/mem/mport.hh
diff options
context:
space:
mode:
Diffstat (limited to 'src/mem/mport.hh')
-rw-r--r--src/mem/mport.hh41
1 files changed, 38 insertions, 3 deletions
diff --git a/src/mem/mport.hh b/src/mem/mport.hh
index 7f167c227..664acc559 100644
--- a/src/mem/mport.hh
+++ b/src/mem/mport.hh
@@ -1,4 +1,16 @@
/*
+ * Copyright (c) 2012 ARM Limited
+ * All rights reserved
+ *
+ * The license below extends only to copyright in the software and shall
+ * not be construed as granting a license to any other intellectual
+ * property including but not limited to intellectual property relating
+ * to a hardware implementation of the functionality of the software
+ * licensed hereunder. You may use the software subject to the license
+ * terms below provided that you ensure that this notice is replicated
+ * unmodified and in its entirety in all distributions of the software,
+ * modified or unmodified, in source code or in binary form.
+ *
* Copyright (c) 2008 The Regents of The University of Michigan
* All rights reserved.
*
@@ -41,15 +53,15 @@
* the underpinnings of SimpleTimingPort, but it tweaks some of the external
* functions.
*/
-class MessagePort : public SimpleTimingPort
+class MessageSlavePort : public SimpleTimingPort
{
public:
- MessagePort(const std::string &name, MemObject *owner) :
+ MessageSlavePort(const std::string &name, MemObject *owner) :
SimpleTimingPort(name, owner)
{}
- virtual ~MessagePort()
+ virtual ~MessageSlavePort()
{}
protected:
@@ -57,6 +69,29 @@ class MessagePort : public SimpleTimingPort
Tick recvAtomic(PacketPtr pkt);
virtual Tick recvMessage(PacketPtr pkt) = 0;
+};
+
+class MessageMasterPort : public QueuedMasterPort
+{
+ public:
+
+ MessageMasterPort(const std::string &name, MemObject *owner) :
+ QueuedMasterPort(name, owner, queue), queue(*owner, *this)
+ {}
+
+ virtual ~MessageMasterPort()
+ {}
+
+ void recvFunctional(PacketPtr pkt) { assert(false); }
+
+ Tick recvAtomic(PacketPtr pkt);
+
+ bool recvTiming(PacketPtr pkt) { recvAtomic(pkt); return true; }
+
+ protected:
+
+ /** A packet queue for outgoing packets. */
+ PacketQueue queue;
// Accept and ignore responses.
virtual Tick recvResponse(PacketPtr pkt)