(no commit message)
authorlkcl <lkcl@web>
Sat, 9 Jul 2022 12:45:01 +0000 (13:45 +0100)
committerIkiWiki <ikiwiki.info>
Sat, 9 Jul 2022 12:45:01 +0000 (13:45 +0100)
openpower/sv/remap.mdwn

index a50538d93425252b0c85bfe2b5a51fa9cda7c76f..a40fadad2f4ce0ab707fc9b5415141f276c97e65 100644 (file)
@@ -349,7 +349,8 @@ When `mm=1`:
 * bits 0-2 of `rmm` indicate an index selecting mi0-mo1
 * bits 3-4 of `rmm` indicate which SVSHAPE 0-3 shall be updated
 * only the selected SVSHAPE is overwritten
-* only the relevant bits in the REMAP SPR are updated
+* only the relevant bits in the REMAP area of SVSTATE are updated
+* REMAP persistence bit is set.
 
 Example 1: if `rmm`=0b10011 then mo0 is selected and SVSHAPE2
 to be updated. REMAP.SVme[3] will be set high and REMAP.mo0
@@ -359,6 +360,15 @@ Example 2: if `rmm`=0b11100 then mo1 is selected and SVSHAPE3
 to be updated. REMAP.SVme[4] will be set high and REMAP.mo1
 set to 3 (SVSHAPE3).
 
+Rough algorithmic form:
+
+    marray = [mi0, mi1, mi2, mo0, mo1]
+    bit = rmm[0:2]
+    idx = rmm[3:4]
+    setup(SVSHAPE[idx])
+    SVSTATE{marray[bit]} = idx
+    SVSTATE.pst = 1
+
 In essence, `mm=0` is intended for use to set as much of the
 REMAP State SPRs as practical with a single instruction,
 whilst `mm=1` is intended to be a little more refined.