ISA datasheets often use binary or hexadecimal constant values. By doing base conversion, we might introduce bugs. Safer is to copy/paste the datasheet value.
To add support for bin/hex constants in argument field token, extend the re_num_ident regexp and use '0' as radix base when parsing the integer (to interpret it as a code literal). Suggested-by: Richard Henderson <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- v2: Fix regexp (Richard) --- scripts/decodetree.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/decodetree.py b/scripts/decodetree.py index 47aa9caf6d1..c8136073535 100644 --- a/scripts/decodetree.py +++ b/scripts/decodetree.py @@ -50,6 +50,7 @@ re_fld_ident = '%[a-zA-Z0-9_]*' re_fmt_ident = '@[a-zA-Z0-9_]*' re_pat_ident = '[a-zA-Z0-9_]*' +re_num_ident = '[+-]?([0-9]+|0x[0-9a-fA-F]+|0b[01]+)' def error_with_file(file, lineno, *args): """Print an error message from file:line and args and exit.""" @@ -849,9 +850,9 @@ def parse_generic(lineno, parent_pat, name, toks): continue # 'Foo=number' sets an argument field to a constant value - if re.fullmatch(re_C_ident + '=[+-]?[0-9]+', t): + if re.fullmatch(re_C_ident + '=' + re_num_ident, t): (fname, value) = t.split('=') - value = int(value) + value = int(value, 0) flds = add_field(lineno, flds, fname, ConstField(value)) continue -- 2.26.2
