must not add to read regs unless in the authorised list
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 17 May 2021 13:04:24 +0000 (14:04 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 17 May 2021 13:04:24 +0000 (14:04 +0100)
src/openpower/decoder/isa/caller.py
src/openpower/decoder/pseudo/parser.py

index acbfc9424c35b53c73e697e06fd9d14249806546..763b0ace840af4f5227d78470833c397ab2435d5 100644 (file)
@@ -73,7 +73,7 @@ REG_SORT_ORDER = {
     "MSR": 0,
     "SVSTATE": 0,
 
-    "overflow": 1,
+    "overflow": 1, # should definitely be last
 }
 
 fregs = ['FRA', 'FRB', 'FRC', 'FRS', 'FRT']
@@ -81,7 +81,7 @@ fregs = ['FRA', 'FRB', 'FRC', 'FRS', 'FRT']
 
 def create_args(reglist, extra=None):
     retval = list(OrderedSet(reglist))
-    retval.sort(key=lambda reg: REG_SORT_ORDER[reg])
+    retval.sort(key=lambda reg: REG_SORT_ORDER.get(reg, 0))
     if extra is not None:
         return [extra] + retval
     return retval
index 3428d27c2f10ca6c3bd78988284015b108af8857..d403a089246c05f316efd5ec247d76d6aa609b90 100644 (file)
@@ -425,7 +425,8 @@ class PowerParser:
                 idx = p[1].args[0].id
                 ridx = ast.Name("_%s" % idx, ast.Load())
                 p[1] = ast.Subscript(p[1].func, ridx, ast.Load())
-                self.read_regs.add(idx)  # add to list of regs to read
+                if idx in self.gprs:
+                    self.read_regs.add(idx)  # add to list of regs to read
             elif isinstance(p[1], ast.Call) and p[1].func.id == 'MEM':
                 print("mem assign")
                 print(astor.dump_tree(p[1]))