summaryrefslogtreecommitdiff
path: root/src/gpgpu-sim/addrdec.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/gpgpu-sim/addrdec.cc')
-rw-r--r--src/gpgpu-sim/addrdec.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gpgpu-sim/addrdec.cc b/src/gpgpu-sim/addrdec.cc
index b259f1a..868696d 100644
--- a/src/gpgpu-sim/addrdec.cc
+++ b/src/gpgpu-sim/addrdec.cc
@@ -67,13 +67,13 @@ void linear_to_raw_address_translation::addrdec_setoption(option_parser_t opp)
new_addr_type linear_to_raw_address_translation::partition_address( new_addr_type addr ) const
{
if (!gap) {
+ return addrdec_packbits( ~addrdec_mask[CHIP], addr, 64, 0 );
+ } else {
// see addrdec_tlx for explanation
unsigned long long int partition_addr;
partition_addr = ( (addr>>ADDR_CHIP_S) / Nchips) << ADDR_CHIP_S;
partition_addr |= addr & ((1 << ADDR_CHIP_S) - 1);
return partition_addr;
- } else {
- return addrdec_packbits( ~addrdec_mask[CHIP], addr, 64, 0 );
}
}
@@ -345,6 +345,11 @@ void linear_to_raw_address_translation::sweep_test() const
abort();
} else {
assert((int)tlx.chip < Nchips);
+ // ensure that partition_address() returns the concatenated address
+ if ((ADDR_CHIP_S != -1 and raw_addr >= (1ULL << ADDR_CHIP_S)) or
+ (ADDR_CHIP_S == -1 and raw_addr >= (1ULL << addrdec_mklow[CHIP]))) {
+ assert(raw_addr != partition_address(raw_addr));
+ }
history_map[tlx] = raw_addr;
}