fix sprset mtspr/mfspr pseudocode with wrong definition of
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 15 Sep 2022 00:46:14 +0000 (01:46 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 15 Sep 2022 00:46:14 +0000 (01:46 +0100)
spr, not existent in the Power v3.0 spec.

https://bugs.libre-soc.org/show_bug.cgi?id=917#c54
works fine, required removal of hack in ISACaller to uppercase spr
to SPR

openpower/isa/sprset.mdwn
openpower/isatables/fields.text
src/openpower/decoder/isa/caller.py

index ab1ace714a17c28871969ff11854800888e1c49f..f51cbbb66e372dfe180e768a65191678d1cb3771 100644 (file)
 
 XFX-Form
 
-* mtspr SPR,RS
+* mtspr spr,RS
 
 Pseudo-code:
 
-    n <- spr[5:9] || spr[0:4]
+    n <- spr
     switch (n)
       case(13): see(Book_III_p974)
       case(808, 809, 810, 811):
@@ -55,11 +55,11 @@ Special Registers Altered:
 
 XFX-Form
 
-* mfspr RT,SPR
+* mfspr RT,spr
 
 Pseudo-code:
 
-    n <- spr[5:9] || spr[0:4]
+    n <- spr
     switch (n)
       case(129): see(Book_III_p975)
       case(808, 809, 810, 811):
index 95c76fb77fbcbe99c45c0a41d39a7cf50a0636c9..2d3cdb4743d158f383f08fa8d32e8181117d4c57 100644 (file)
          Immediate field that specifies signed versus
          unsigned conversion.
          Formats: X
+    spr (16:20,11:15)
+         Field used to specify a Special Purpose Register
+         for the mtspr and mfspr instructions.
+         Formats: XFX
     SPR (11:20)
          Field used to specify a Special Purpose Register
          for the mtspr and mfspr instructions.
index e0caf47c7ffbdd06a3dfa802c2ba37745675a404..03ce7d6238a035d30ed9cb695836054184daa008 100644 (file)
@@ -743,10 +743,7 @@ class ISACaller(ISACallerHelper, ISAFPHelpers):
                 assert regnum <= 7, "sigh, TODO, 128 CR fields"
                 val = (val & 0b11) | (regnum << 2)
             else:
-                if name == 'spr':
-                    sig = getattr(fields, name.upper())
-                else:
-                    sig = getattr(fields, name)
+                sig = getattr(fields, name)
                 val = yield sig
             # these are all opcode fields involved in index-selection of CR,
             # and need to do "standard" arithmetic.  CR[BA+32] for example