mem: Fixing memory size type issue in port proxy.
This patch changes the data type used for image size from int to uint64_t. Current version allows initializing AbstractMemory types with a maximum binary size of 2GiB. This will be limiting in many studies. Change-Id: Iea3bbd525d4a67aa7cf606f6311aef66c9b4a52c
This commit is contained in:
@@ -56,7 +56,7 @@ PortProxy::PortProxy(const RequestPort &port, unsigned int cache_line_size) :
|
||||
|
||||
void
|
||||
PortProxy::readBlobPhys(Addr addr, Request::Flags flags,
|
||||
void *p, int size) const
|
||||
void *p, uint64_t size) const
|
||||
{
|
||||
for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done();
|
||||
gen.next()) {
|
||||
@@ -73,7 +73,7 @@ PortProxy::readBlobPhys(Addr addr, Request::Flags flags,
|
||||
|
||||
void
|
||||
PortProxy::writeBlobPhys(Addr addr, Request::Flags flags,
|
||||
const void *p, int size) const
|
||||
const void *p, uint64_t size) const
|
||||
{
|
||||
for (ChunkGenerator gen(addr, size, _cacheLineSize); !gen.done();
|
||||
gen.next()) {
|
||||
@@ -90,7 +90,7 @@ PortProxy::writeBlobPhys(Addr addr, Request::Flags flags,
|
||||
|
||||
void
|
||||
PortProxy::memsetBlobPhys(Addr addr, Request::Flags flags,
|
||||
uint8_t v, int size) const
|
||||
uint8_t v, uint64_t size) const
|
||||
{
|
||||
// quick and dirty...
|
||||
uint8_t *buf = new uint8_t[size];
|
||||
|
||||
@@ -120,19 +120,19 @@ class PortProxy : FunctionalRequestProtocol
|
||||
* Read size bytes memory at physical address and store in p.
|
||||
*/
|
||||
void readBlobPhys(Addr addr, Request::Flags flags,
|
||||
void *p, int size) const;
|
||||
void *p, uint64_t size) const;
|
||||
|
||||
/**
|
||||
* Write size bytes from p to physical address.
|
||||
*/
|
||||
void writeBlobPhys(Addr addr, Request::Flags flags,
|
||||
const void *p, int size) const;
|
||||
const void *p, uint64_t size) const;
|
||||
|
||||
/**
|
||||
* Fill size bytes starting at physical addr with byte value val.
|
||||
*/
|
||||
void memsetBlobPhys(Addr addr, Request::Flags flags,
|
||||
uint8_t v, int size) const;
|
||||
uint8_t v, uint64_t size) const;
|
||||
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ class PortProxy : FunctionalRequestProtocol
|
||||
* Returns true on success and false on failure.
|
||||
*/
|
||||
virtual bool
|
||||
tryReadBlob(Addr addr, void *p, int size) const
|
||||
tryReadBlob(Addr addr, void *p, uint64_t size) const
|
||||
{
|
||||
readBlobPhys(addr, 0, p, size);
|
||||
return true;
|
||||
@@ -154,7 +154,7 @@ class PortProxy : FunctionalRequestProtocol
|
||||
* Returns true on success and false on failure.
|
||||
*/
|
||||
virtual bool
|
||||
tryWriteBlob(Addr addr, const void *p, int size) const
|
||||
tryWriteBlob(Addr addr, const void *p, uint64_t size) const
|
||||
{
|
||||
writeBlobPhys(addr, 0, p, size);
|
||||
return true;
|
||||
@@ -165,7 +165,7 @@ class PortProxy : FunctionalRequestProtocol
|
||||
* Returns true on success and false on failure.
|
||||
*/
|
||||
virtual bool
|
||||
tryMemsetBlob(Addr addr, uint8_t val, int size) const
|
||||
tryMemsetBlob(Addr addr, uint8_t val, uint64_t size) const
|
||||
{
|
||||
memsetBlobPhys(addr, 0, val, size);
|
||||
return true;
|
||||
@@ -179,7 +179,7 @@ class PortProxy : FunctionalRequestProtocol
|
||||
* Same as tryReadBlob, but insists on success.
|
||||
*/
|
||||
void
|
||||
readBlob(Addr addr, void *p, int size) const
|
||||
readBlob(Addr addr, void *p, uint64_t size) const
|
||||
{
|
||||
if (!tryReadBlob(addr, p, size))
|
||||
fatal("readBlob(%#x, ...) failed", addr);
|
||||
@@ -189,7 +189,7 @@ class PortProxy : FunctionalRequestProtocol
|
||||
* Same as tryWriteBlob, but insists on success.
|
||||
*/
|
||||
void
|
||||
writeBlob(Addr addr, const void *p, int size) const
|
||||
writeBlob(Addr addr, const void *p, uint64_t size) const
|
||||
{
|
||||
if (!tryWriteBlob(addr, p, size))
|
||||
fatal("writeBlob(%#x, ...) failed", addr);
|
||||
@@ -199,7 +199,7 @@ class PortProxy : FunctionalRequestProtocol
|
||||
* Same as tryMemsetBlob, but insists on success.
|
||||
*/
|
||||
void
|
||||
memsetBlob(Addr addr, uint8_t v, int size) const
|
||||
memsetBlob(Addr addr, uint8_t v, uint64_t size) const
|
||||
{
|
||||
if (!tryMemsetBlob(addr, v, size))
|
||||
fatal("memsetBlob(%#x, ...) failed", addr);
|
||||
|
||||
@@ -86,7 +86,7 @@ TranslatingPortProxy::tryOnBlob(BaseMMU::Mode mode, TranslationGenPtr gen,
|
||||
}
|
||||
|
||||
bool
|
||||
TranslatingPortProxy::tryReadBlob(Addr addr, void *p, int size) const
|
||||
TranslatingPortProxy::tryReadBlob(Addr addr, void *p, uint64_t size) const
|
||||
{
|
||||
constexpr auto mode = BaseMMU::Read;
|
||||
return tryOnBlob(mode, _tc->getMMUPtr()->translateFunctional(
|
||||
@@ -99,7 +99,7 @@ TranslatingPortProxy::tryReadBlob(Addr addr, void *p, int size) const
|
||||
|
||||
bool
|
||||
TranslatingPortProxy::tryWriteBlob(
|
||||
Addr addr, const void *p, int size) const
|
||||
Addr addr, const void *p, uint64_t size) const
|
||||
{
|
||||
constexpr auto mode = BaseMMU::Write;
|
||||
return tryOnBlob(mode, _tc->getMMUPtr()->translateFunctional(
|
||||
@@ -111,7 +111,7 @@ TranslatingPortProxy::tryWriteBlob(
|
||||
}
|
||||
|
||||
bool
|
||||
TranslatingPortProxy::tryMemsetBlob(Addr addr, uint8_t v, int size) const
|
||||
TranslatingPortProxy::tryMemsetBlob(Addr addr, uint8_t v, uint64_t size) const
|
||||
{
|
||||
constexpr auto mode = BaseMMU::Write;
|
||||
return tryOnBlob(mode, _tc->getMMUPtr()->translateFunctional(
|
||||
|
||||
@@ -77,16 +77,16 @@ class TranslatingPortProxy : public PortProxy
|
||||
|
||||
/** Version of tryReadblob that translates virt->phys and deals
|
||||
* with page boundries. */
|
||||
bool tryReadBlob(Addr addr, void *p, int size) const override;
|
||||
bool tryReadBlob(Addr addr, void *p, uint64_t size) const override;
|
||||
|
||||
/** Version of tryWriteBlob that translates virt->phys and deals
|
||||
* with page boundries. */
|
||||
bool tryWriteBlob(Addr addr, const void *p, int size) const override;
|
||||
bool tryWriteBlob(Addr addr, const void *p, uint64_t size) const override;
|
||||
|
||||
/**
|
||||
* Fill size bytes starting at addr with byte value val.
|
||||
*/
|
||||
bool tryMemsetBlob(Addr address, uint8_t v, int size) const override;
|
||||
bool tryMemsetBlob(Addr address, uint8_t v, uint64_t size) const override;
|
||||
};
|
||||
|
||||
} // namespace gem5
|
||||
|
||||
Reference in New Issue
Block a user