From 7122b83d8f92d77bccae432b4e90ba12f1babad5 Mon Sep 17 00:00:00 2001 From: Nilay Vaish Date: Mon, 27 Aug 2012 01:00:54 -0500 Subject: [PATCH] Ruby Memory Vector: Allow more than 4GB of memory The memory size variable was a 32-bit int. This meant that the size of the memory was limited to 4GB. This patch changes the type of the variable to 64-bit to support larger memory sizes. Thanks to Raghuraman Balasubramanian for bringing this to notice. --- src/mem/ruby/system/MemoryVector.hh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mem/ruby/system/MemoryVector.hh b/src/mem/ruby/system/MemoryVector.hh index 315e00942..f8e407942 100644 --- a/src/mem/ruby/system/MemoryVector.hh +++ b/src/mem/ruby/system/MemoryVector.hh @@ -42,11 +42,11 @@ class MemoryVector { public: MemoryVector(); - MemoryVector(uint32 size); + MemoryVector(uint64 size); ~MemoryVector(); friend class DirectoryMemory; - void resize(uint32 size); // destructive + void resize(uint64 size); // destructive void write(const Address & paddr, uint8* data, int len); uint8* read(const Address & paddr, uint8* data, int len); @@ -56,7 +56,7 @@ class MemoryVector private: uint8* getBlockPtr(const PhysAddress & addr); - uint32 m_size; + uint64 m_size; uint8** m_pages; uint32 m_num_pages; const uint32 m_page_offset_mask; @@ -73,7 +73,7 @@ MemoryVector::MemoryVector() } inline -MemoryVector::MemoryVector(uint32 size) +MemoryVector::MemoryVector(uint64 size) : m_page_offset_mask(4095) { resize(size); @@ -91,7 +91,7 @@ MemoryVector::~MemoryVector() } inline void -MemoryVector::resize(uint32 size) +MemoryVector::resize(uint64 size) { if (m_pages != NULL){ for (int i = 0; i < m_num_pages; i++) { -- 2.30.2