From: Nilay Vaish Date: Mon, 27 Aug 2012 06:00:54 +0000 (-0500) Subject: Ruby Memory Vector: Allow more than 4GB of memory X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7122b83d8f92d77bccae432b4e90ba12f1babad5;p=gem5.git 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. --- 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++) {