summaryrefslogtreecommitdiff
path: root/src/mem/ruby/common/DataBlock.cc
diff options
context:
space:
mode:
authorNilay Vaish <nilay@cs.wisc.edu>2011-02-25 17:51:02 -0600
committerNilay Vaish <nilay@cs.wisc.edu>2011-02-25 17:51:02 -0600
commit80b388647588ae864a78a82bb20892e893b6ba10 (patch)
treecab33aa13c56b5ec1c9cbcf1b0275387db37c0a5 /src/mem/ruby/common/DataBlock.cc
parenta10685ad1e3077e6f4a059f984a4964e37dac807 (diff)
downloadgem5-80b388647588ae864a78a82bb20892e893b6ba10.tar.xz
Ruby: Make DataBlock.hh independent of RubySystem
This patch changes DataBlock.hh so that it is not dependent on RubySystem. This dependence seems unecessary. All those functions that depende on RubySystem have been moved to DataBlock.cc file.
Diffstat (limited to 'src/mem/ruby/common/DataBlock.cc')
-rw-r--r--src/mem/ruby/common/DataBlock.cc56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/mem/ruby/common/DataBlock.cc b/src/mem/ruby/common/DataBlock.cc
index 8d3c81242..5aba4332a 100644
--- a/src/mem/ruby/common/DataBlock.cc
+++ b/src/mem/ruby/common/DataBlock.cc
@@ -27,6 +27,62 @@
*/
#include "mem/ruby/common/DataBlock.hh"
+#include "mem/ruby/system/System.hh"
+
+DataBlock::DataBlock(const DataBlock &cp)
+{
+ m_data = new uint8[RubySystem::getBlockSizeBytes()];
+ memcpy(m_data, cp.m_data, RubySystem::getBlockSizeBytes());
+ m_alloc = true;
+}
+
+void
+DataBlock::alloc()
+{
+ m_data = new uint8[RubySystem::getBlockSizeBytes()];
+ m_alloc = true;
+ clear();
+}
+
+void
+DataBlock::clear()
+{
+ memset(m_data, 0, RubySystem::getBlockSizeBytes());
+}
+
+bool
+DataBlock::equal(const DataBlock& obj) const
+{
+ return !memcmp(m_data, obj.m_data, RubySystem::getBlockSizeBytes());
+}
+
+void
+DataBlock::print(std::ostream& out) const
+{
+ using namespace std;
+
+ int size = RubySystem::getBlockSizeBytes();
+ out << "[ ";
+ for (int i = 0; i < size; i++) {
+ out << setw(2) << setfill('0') << hex << "0x" << (int)m_data[i] << " ";
+ out << setfill(' ');
+ }
+ out << dec << "]" << flush;
+}
+
+const uint8*
+DataBlock::getData(int offset, int len) const
+{
+ assert(offset + len <= RubySystem::getBlockSizeBytes());
+ return &m_data[offset];
+}
+
+void
+DataBlock::setData(uint8* data, int offset, int len)
+{
+ assert(offset + len <= RubySystem::getBlockSizeBytes());
+ memcpy(&m_data[offset], data, len);
+}
DataBlock &
DataBlock::operator=(const DataBlock & obj)