X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fpython%2Fm5%2Fparams.py;h=b9afff2a1dccf4e1e1904949a298472ad7b74e95;hb=24b56f92731091fb9a6c989affb04cca3109b29b;hp=c1c6ca94717cbd9659b4347fd384207f032a5652;hpb=d776a13026dc58919c5df0c9981452bea0ef3877;p=gem5.git diff --git a/src/python/m5/params.py b/src/python/m5/params.py index c1c6ca947..b9afff2a1 100644 --- a/src/python/m5/params.py +++ b/src/python/m5/params.py @@ -757,8 +757,6 @@ class AddrRange(ParamValue): def __init__(self, *args, **kwargs): # Disable interleaving and hashing by default - self.intlvHighBit = 0 - self.xorHighBit = 0 self.intlvBits = 0 self.intlvMatch = 0 self.masks = [] @@ -782,20 +780,22 @@ class AddrRange(ParamValue): self.masks = [ long(x) for x in list(kwargs.pop('masks')) ] self.intlvBits = len(self.masks) else: - if 'intlvHighBit' in kwargs: - intlv_high_bit = int(kwargs.pop('intlvHighBit')) - if 'xorHighBit' in kwargs: - xor_high_bit = int(kwargs.pop('xorHighBit')) if 'intlvBits' in kwargs: self.intlvBits = int(kwargs.pop('intlvBits')) self.masks = [0] * self.intlvBits - for i in range(0, self.intlvBits): - bit1 = intlv_high_bit - i - mask = 1 << bit1 - if xor_high_bit != 0: - bit2 = xor_high_bit - i - mask |= 1 << bit2 - self.masks[self.intlvBits - i - 1] = mask + if 'intlvHighBit' not in kwargs: + raise TypeError("No interleave bits specified") + intlv_high_bit = int(kwargs.pop('intlvHighBit')) + xor_high_bit = 0 + if 'xorHighBit' in kwargs: + xor_high_bit = int(kwargs.pop('xorHighBit')) + for i in range(0, self.intlvBits): + bit1 = intlv_high_bit - i + mask = 1 << bit1 + if xor_high_bit != 0: + bit2 = xor_high_bit - i + mask |= 1 << bit2 + self.masks[self.intlvBits - i - 1] = mask if len(args) == 0: self.start = Addr(kwargs.pop('start')) @@ -1485,7 +1485,9 @@ class Enum(ParamValue): for elem_name in cls.map.keys(): code('} else if (%s == "%s") {' % (src, elem_name)) code.indent() - code('%s = Enums::%s;' % (dest, elem_name)) + name = cls.__name__ if cls.enum_name is None else cls.enum_name + code('%s = %s::%s;' % (dest, name if cls.is_class else 'Enums', + elem_name)) code('%s true;' % ret) code.dedent() code('} else {')