diff options
Diffstat (limited to 'src/mem/ruby/slicc_interface')
-rw-r--r-- | src/mem/ruby/slicc_interface/AbstractCacheEntry.hh | 7 | ||||
-rw-r--r-- | src/mem/ruby/slicc_interface/AbstractController.hh | 3 | ||||
-rw-r--r-- | src/mem/ruby/slicc_interface/AbstractEntry.hh | 6 |
3 files changed, 9 insertions, 7 deletions
diff --git a/src/mem/ruby/slicc_interface/AbstractCacheEntry.hh b/src/mem/ruby/slicc_interface/AbstractCacheEntry.hh index ff5ff25ab..2ba128493 100644 --- a/src/mem/ruby/slicc_interface/AbstractCacheEntry.hh +++ b/src/mem/ruby/slicc_interface/AbstractCacheEntry.hh @@ -35,6 +35,7 @@ #include <iostream> +#include "base/misc.hh" #include "mem/protocol/AccessPermission.hh" #include "mem/ruby/common/Address.hh" #include "mem/ruby/slicc_interface/AbstractEntry.hh" @@ -50,6 +51,12 @@ class AbstractCacheEntry : public AbstractEntry // Get/Set permission of the entry void changePermission(AccessPermission new_perm); + // The methods below are those called by ruby runtime, add when it + // is absolutely necessary and should all be virtual function. + virtual DataBlock& getDataBlk() + { panic("getDataBlk() not implemented!"); } + + Address m_Address; // Address of this block, required by CacheMemory int m_locked; // Holds info whether the address is locked, // required for implementing LL/SC diff --git a/src/mem/ruby/slicc_interface/AbstractController.hh b/src/mem/ruby/slicc_interface/AbstractController.hh index 42d158653..f30967e48 100644 --- a/src/mem/ruby/slicc_interface/AbstractController.hh +++ b/src/mem/ruby/slicc_interface/AbstractController.hh @@ -67,7 +67,6 @@ class AbstractController : public ClockedObject, public Consumer virtual MessageBuffer* getMandatoryQueue() const = 0; virtual AccessPermission getAccessPermission(const Address& addr) = 0; - virtual DataBlock& getDataBlock(const Address& addr) = 0; virtual void print(std::ostream & out) const = 0; virtual void wakeup() = 0; @@ -82,9 +81,11 @@ class AbstractController : public ClockedObject, public Consumer //! The boolean return value indicates if the read was performed //! successfully. virtual bool functionalReadBuffers(PacketPtr&) = 0; + virtual void functionalRead(const Address &addr, PacketPtr) = 0; //! The return value indicates the number of messages written with the //! data from the packet. virtual uint32_t functionalWriteBuffers(PacketPtr&) = 0; + virtual int functionalWrite(const Address &addr, PacketPtr) = 0; //! Function for enqueuing a prefetch request virtual void enqueuePrefetch(const Address&, const RubyRequestType&) diff --git a/src/mem/ruby/slicc_interface/AbstractEntry.hh b/src/mem/ruby/slicc_interface/AbstractEntry.hh index b10306281..2cf1c4b5b 100644 --- a/src/mem/ruby/slicc_interface/AbstractEntry.hh +++ b/src/mem/ruby/slicc_interface/AbstractEntry.hh @@ -33,8 +33,6 @@ #include "mem/protocol/AccessPermission.hh" -class DataBlock; - class AbstractEntry { public: @@ -45,10 +43,6 @@ class AbstractEntry AccessPermission getPermission() const; void changePermission(AccessPermission new_perm); - // The methods below are those called by ruby runtime, add when it - // is absolutely necessary and should all be virtual function. - virtual DataBlock& getDataBlk() = 0; - virtual void print(std::ostream& out) const = 0; AccessPermission m_Permission; // Access permission for this |