X-Git-Url: https://git.ozlabs.org/?p=bitfield;a=blobdiff_plain;f=bitfield;h=71e495813fb2bc788f1460e08959e00fdf761e49;hp=27605d33bf3a7cdcb52e3f3f686f8b0c71b43a89;hb=6237f6eae79af749e2653f40f989dad7705f455c;hpb=f28ac723f98f1618f4cbf203cf226f1e9c37cdc4 diff --git a/bitfield b/bitfield index 27605d3..71e4958 100644 --- a/bitfield +++ b/bitfield @@ -130,6 +130,7 @@ def parse_config(bnf, regs, file): # default to 64 bit registers width = 64 name = None + alias_id = None fields = [] for t in ts: @@ -154,6 +155,22 @@ def parse_config(bnf, regs, file): "Invalid value in %s" % id) fields[-1].add_value(v[0], v[1]) + elif t[0] == 'alias': + alias_id = t[1].strip() + + if alias_id is not None: + if name is not None or fields != []: + raise ConfigurationError(file, ("Definiton " \ + + "for %s is an alias, but has other " \ + + "attributes") % id) + + if not regs.has_key(alias_id): + raise ConfigurationError(file, "Aliasing " + "non-existent register %s (from %s)" \ + % (alias_id, id)) + + regs[id] = regs[alias_id] + continue if name is None or name == '': raise ConfigurationError(file,