Merge "Bug fixes for WMMU."
diff --git a/shodan_infrastructure/SpringbokRiscV32.cs b/shodan_infrastructure/SpringbokRiscV32.cs
index dc7cb0b..8d348d9 100644
--- a/shodan_infrastructure/SpringbokRiscV32.cs
+++ b/shodan_infrastructure/SpringbokRiscV32.cs
@@ -377,6 +377,7 @@
             case 1: /* 1024..2047 */
                 if (IMmu != null)
                 {
+                    offset -= 1024;
                     uint window = (uint)(offset >> 4);
                     switch (offset & 15)
                     {
@@ -396,6 +397,7 @@
             case 2: /* 2048..3071 */
                 if (DMmu != null)
                 {
+                    offset -= 2048;
                     uint window = (uint)(offset >> 4);
                     switch (offset & 15)
                     {
@@ -427,6 +429,7 @@
             case 1: /* 1024..2047 */
                 if (IMmu != null)
                 {
+                    offset -= 1024;
                     uint window = (uint)(offset >> 4);
                     switch (offset & 15)
                     {
@@ -445,6 +448,7 @@
             case 2: /* 2048..3071 */
                 if (DMmu != null)
                 {
+                    offset -= 2048;
                     uint window = (uint)(offset >> 4);
                     switch (offset & 15)
                     {
@@ -576,7 +580,8 @@
         private readonly MappedMemory IMem;
         private readonly MappedMemory DMem;
 
-        public long Size => 0x400;
+        // Length of register space.
+        public long Size => 0x1000;
         private enum Registers
         {
             IntrState = 0x00,