resolving old and new behaviour for lookup of SPRs
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 8 Jul 2020 19:23:39 +0000 (20:23 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Wed, 8 Jul 2020 19:23:39 +0000 (20:23 +0100)
src/soc/simple/test/test_core.py

index aa1845e7846546a047b1a4dadf6b6479523e19ec..04108cdc4a1e7cd1bd7418cda04c0c65d63070a1 100644 (file)
@@ -14,7 +14,7 @@ from soc.decoder.power_decoder import create_pdecode
 from soc.decoder.power_decoder2 import PowerDecode2
 from soc.decoder.selectable_int import SelectableInt
 from soc.decoder.isa.all import ISA
-from soc.decoder.power_enums import SPR, Function, XER_bits
+from soc.decoder.power_enums import SPR, spr_dict, Function, XER_bits
 from soc.config.test.test_loadstore import TestMemPspec
 
 from soc.simple.core import NonProductionCore
@@ -56,9 +56,14 @@ def setup_regs(core, test):
     # set up XER.  "direct" write (bypass rd/write ports)
     xregs = core.regs.xer
     print ("sprs", test.sprs)
+    xer = None
     if 'XER' in test.sprs:
         xer = test.sprs['XER']
-        xer = SelectableInt(xer, 64)
+    if 1 in test.sprs:
+        xer = test.sprs[1]
+    if xer is not None:
+        if isinstance(xer, int):
+            xer = SelectableInt(xer, 64)
         sobit = xer[XER_bits['SO']].value
         yield xregs.regs[xregs.SO].reg.eq(sobit)
         cabit = xer[XER_bits['CA']].value
@@ -79,6 +84,8 @@ def setup_regs(core, test):
     fregs = core.regs.fast
     sregs = core.regs.spr
     for sprname, val in test.sprs.items():
+        if isinstance(sprname, int):
+            sprname = spr_dict[sprname].name
         if sprname == 'XER':
             continue
         fast = spr_to_fast_reg(sprname)