diff -r 968832fb20bd -r 9a15d64f7738 src/arch/arm/ArmSystem.py --- a/src/arch/arm/ArmSystem.py Tue May 27 11:00:56 2014 -0500 +++ b/src/arch/arm/ArmSystem.py Fri Aug 22 13:31:12 2014 +0100 @@ -65,7 +65,7 @@ highest_el_is_64 = Param.Bool(False, "True if the register width of the highest implemented exception level " "is 64 bits (ARMv8)") - reset_addr_64 = Param.UInt64(0x0, + reset_addr_64 = Param.Addr(0x0, "Reset address if the highest implemented exception level is 64 bits " "(ARMv8)") phys_addr_range_64 = Param.UInt8(40, diff -r 968832fb20bd -r 9a15d64f7738 src/python/m5/params.py --- a/src/python/m5/params.py Tue May 27 11:00:56 2014 -0500 +++ b/src/python/m5/params.py Fri Aug 22 13:31:12 2014 +0100 @@ -626,9 +626,17 @@ self.value = value.value else: try: + # Often addresses are referred to with sizes. Ex: A device + # base address is at "512MB". Use toMemorySize() to convert + # these into addresses. If the address is not specified with a + # "size", an exception will occur and numeric translation will + # proceed below. self.value = convert.toMemorySize(value) - except TypeError: - self.value = long(value) + except (TypeError, ValueError): + # Convert number to string and use long() to do automatic + # base conversion (requires base=0 for auto-conversion) + self.value = long(str(value), base=0) + self._check() def __add__(self, other): if isinstance(other, Addr):