return len(self.bits)
def add_value(self, value, description):
- self.values[int(value)] = description
+ self.values[int(value, 0)] = description
def mask(self, reg_width, value):
ret = 0
val = mask << shift
for i in range(0, width):
if mask & (1 << i):
- bits.append(width - i - 1 - shift)
+ bits.insert(0, width - i - 1 - shift)
return bits
+ @staticmethod
+ def mask_to_bits(width, mask):
+ return bitfield.mask_and_shift_to_bits(width, mask, 0)
+
@staticmethod
def parse_bitfield(line, reg):
a = line.split(None, 1)
s.split('<<'))
bits.extend(bitfield.mask_and_shift_to_bits( \
reg.width, mask, shift))
+ elif s.startswith('&'):
+ mask = int(s[1:], 0)
+ bits.extend(bitfield.mask_to_bits(reg.width, \
+ mask))
else:
bits.append(reg.bit_number(int(s)))