correct segment check (off by one in LE/BE convert
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 29 Mar 2021 19:05:11 +0000 (20:05 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 29 Mar 2021 19:05:11 +0000 (20:05 +0100)
src/soc/decoder/isa/radixmmu.py

index 9bd6d53f252223930d22a56b1f3f4201e92b6630..6f4aeae71368ce7c63130ffa4e1b80d275697d33 100644 (file)
@@ -495,7 +495,7 @@ class RADIX:
         # below *directly* match the spec, unlike microwatt which
         # has to turn them around (to LE)
         mask = genmask(shift, 44)
-        nonzero = addr[1:32] & mask[13:44] # mask 31 LSBs (BE numbered 13:44)
+        nonzero = addr[2:33] & mask[13:44] # mask 31 LSBs (BE numbered 13:44)
         print ("RADIX _segment_check nonzero", bin(nonzero.value))
         print ("RADIX _segment_check addr[0-1]", addr[0].value, addr[1].value)
         if addr[0] != addr[1] or nonzero != 0: