mem: Skip address mapper range checks to allow more flexibility

This patch makes the address mapper less stringent about checking the
before and after ranges, i.e. the original and remapped ranges. The
checks were not really necessary, and there are situations when the
previous checks were too strict.
This commit is contained in:
Andreas Hansson
2013-01-07 13:05:38 -05:00
parent 71da1d2157
commit caf6786ad5

View File

@@ -265,27 +265,8 @@ RangeAddrMapper::remapAddr(Addr addr) const
AddrRangeList
RangeAddrMapper::getAddrRanges() const
{
AddrRangeList ranges;
AddrRangeList actualRanges = masterPort.getAddrRanges();
for (AddrRangeIter r = actualRanges.begin(); r != actualRanges.end(); ++r) {
AddrRange range = *r;
for (int j = 0; j < originalRanges.size(); ++j) {
if (range.intersects(originalRanges[j]))
fatal("Cannot remap range that intersects the original"
" ranges but are not a subset.\n");
if (range.isSubset(originalRanges[j])) {
// range is a subset
Addr offset = range.start() - originalRanges[j].start();
Addr start = range.start() - offset;
ranges.push_back(AddrRange(start, start + range.size() - 1));
} else {
ranges.push_back(range);
}
}
}
// Simply return the original ranges as given by the parameters
AddrRangeList ranges(originalRanges.begin(), originalRanges.end());
return ranges;
}