diff --git a/linux-ramdump-parser-v2/register.py b/linux-ramdump-parser-v2/register.py index e9e773434bbd2e90abb8938b6f57923ae70c753b..3c52dd2aace19ea1a6d75797a218896676e3818b 100644 --- a/linux-ramdump-parser-v2/register.py +++ b/linux-ramdump-parser-v2/register.py @@ -39,6 +39,15 @@ class Register(object): >>> abc.other = 0x3 >>> hex(abc.value) '0x31' + >>> abc.value = 0 + >>> abc.value + 0 + >>> abc.value = 42 + >>> abc.value + 42 + >>> abc.zero() + >>> abc.value + 0 You can also overlay fields on top of each other without problems: @@ -84,6 +93,9 @@ class Register(object): """ self._regs[field] = bitrange + def zero(self): + object.__setattr__(self, 'value', 0) + def __dir__(self): return self.__dict__.keys() + self._regs.keys() @@ -96,6 +108,9 @@ class Register(object): return bitops.bvalsel(msb, lsb, self.value) def __setattr__(self, name, newvalue): + if name == 'value': + object.__setattr__(self, 'value', newvalue) + return if name not in self._regs: raise AttributeError if self.value is None: