Nikos Nikoleris has uploaded this change for review. ( https://gem5-review.googlesource.com/c/public/gem5/+/19248

Change subject: python: Fix AddrRange legacy ParamValue wrapper
......................................................................

python: Fix AddrRange legacy ParamValue wrapper

This change fixes a bug that would manifest if a user would
instantiate an AddrRange ParamValue using the kwargs 'intlvBits' and
'intlvHighBit' without specifying the optional 'xorHighBit'.

Change-Id: I2091c432234df9cf907d52af6ba7f0cadd8c37a8
Signed-off-by: Nikos Nikoleris <[email protected]>
---
M src/python/m5/params.py
1 file changed, 13 insertions(+), 13 deletions(-)



diff --git a/src/python/m5/params.py b/src/python/m5/params.py
index da1304d..b9afff2 100644
--- a/src/python/m5/params.py
+++ b/src/python/m5/params.py
@@ -757,8 +757,6 @@

     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 @@
                 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'))

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/19248
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: I2091c432234df9cf907d52af6ba7f0cadd8c37a8
Gerrit-Change-Number: 19248
Gerrit-PatchSet: 1
Gerrit-Owner: Nikos Nikoleris <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/gem5-dev

Reply via email to