Bug fixes for WMMU. * Extend register space to include WMMU area. * Chop off the higher bits to properly select window. Change-Id: Ia66dbc07f3456d587bd199025f10454ee5b20dae
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,