if referred to through GPR (GPR[RA]), add to read_regs in parser
[soc.git] / src / soc / decoder / pseudo / pagereader.py
index 61b7838ff45c846907014792e921f4c6fae04e23..f9e153491adb49e9d733063f74778d830200000f 100644 (file)
@@ -66,6 +66,7 @@ class ISA:
     def __init__(self):
         self.instr = OrderedDict()
         self.forms = {}
+        self.page = {}
         for pth in os.listdir(os.path.join(get_isa_dir())):
             print (get_isa_dir(), pth)
             assert pth.endswith(".mdwn"), "only %s in isa dir" % pth
@@ -153,6 +154,7 @@ class ISA:
         opcode, regs = o[0], o[1:]
         op = copy(d)
         op['regs'] = regs
+        regs[0] = regs[0].split(",")
         op['opcode'] = opcode
         self.instr[opcode] = Ops(**op)
 
@@ -161,6 +163,11 @@ class ISA:
         fl = self.forms.get(form, [])
         self.forms[form] = fl + [opcode]
 
+        # create list of instructions by page
+        page = op['page']
+        pl = self.page.get(page, [])
+        self.page[page] = pl + [opcode]
+
     def pprint_ops(self):
         for k, v in self.instr.items():
             print ("# %s %s" % (v.opcode, v.desc))