diff --git a/driver/common/vx_utils.h b/driver/common/vx_utils.h index b86c75af..0bac7394 100644 --- a/driver/common/vx_utils.h +++ b/driver/common/vx_utils.h @@ -8,4 +8,5 @@ bool is_aligned(uint64_t addr, uint64_t alignment); #define CACHE_BLOCK_SIZE 64 #define ALLOC_BASE_ADDR 0x00000000 -#define LOCAL_MEM_SIZE 4294967296 // 4 GB \ No newline at end of file +#define LOCAL_MEM_SIZE 4294967296 // 4 GB +#define DEVICE_MAX_ADDR 0xfffffffful diff --git a/driver/rtlsim/vortex.cpp b/driver/rtlsim/vortex.cpp index 8e180339..7b241e9a 100644 --- a/driver/rtlsim/vortex.cpp +++ b/driver/rtlsim/vortex.cpp @@ -86,7 +86,7 @@ public: int upload(const void* src, uint64_t dest_addr, uint64_t size, uint64_t src_offset) { uint64_t asize = aligned_size(size, CACHE_BLOCK_SIZE); - if (dest_addr + asize > LOCAL_MEM_SIZE) + if (dest_addr + asize > DEVICE_MAX_ADDR) return -1; /*printf("VXDRV: upload %ld bytes from 0x%lx:", size, uintptr_t((uint8_t*)src + src_offset)); @@ -104,7 +104,7 @@ public: int download(void* dest, uint64_t src_addr, uint64_t size, uint64_t dest_offset) { uint64_t asize = aligned_size(size, CACHE_BLOCK_SIZE); - if (src_addr + asize > LOCAL_MEM_SIZE) + if (src_addr + asize > DEVICE_MAX_ADDR) return -1; ram_.read((uint8_t*)dest + dest_offset, src_addr, asize); @@ -352,4 +352,4 @@ extern int vx_ready_wait(vx_device_h hdevice, uint64_t timeout) { vx_device *device = ((vx_device*)hdevice); return device->wait(timeout); -} \ No newline at end of file +} diff --git a/driver/simx/vortex.cpp b/driver/simx/vortex.cpp index 95957cc2..05d0287b 100644 --- a/driver/simx/vortex.cpp +++ b/driver/simx/vortex.cpp @@ -93,7 +93,7 @@ public: int upload(const void* src, uint64_t dest_addr, uint64_t size, uint64_t src_offset) { uint64_t asize = aligned_size(size, CACHE_BLOCK_SIZE); - if (dest_addr + asize > LOCAL_MEM_SIZE) + if (dest_addr + asize > DEVICE_MAX_ADDR) return -1; ram_.write((const uint8_t*)src + src_offset, dest_addr, asize); @@ -108,7 +108,7 @@ public: int download(void* dest, uint64_t src_addr, uint64_t size, uint64_t dest_offset) { uint64_t asize = aligned_size(size, CACHE_BLOCK_SIZE); - if (src_addr + asize > LOCAL_MEM_SIZE) + if (src_addr + asize > DEVICE_MAX_ADDR) return -1; ram_.read((uint8_t*)dest + dest_offset, src_addr, asize); @@ -354,4 +354,4 @@ extern int vx_ready_wait(vx_device_h hdevice, uint64_t timeout) { vx_device *device = ((vx_device*)hdevice); return device->wait(timeout); -} \ No newline at end of file +}