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.
This commit is contained in:
@@ -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++) {
|
||||
|
||||
Reference in New Issue
Block a user