diff options
-rw-r--r-- | debug/testlib.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/debug/testlib.py b/debug/testlib.py index 4ebed43..6b4854f 100644 --- a/debug/testlib.py +++ b/debug/testlib.py @@ -1208,8 +1208,14 @@ class GdbTest(BaseTest): # memory. try: self.gdb.p("$pmpcfg0=0xf") # TOR, R, W, X - self.gdb.p("$pmpaddr0=0x%x" % - ((self.hart.ram + self.hart.ram_size) >> 2)) + if self.gdb.p("$pmpcfg0") != 0xf: + # TOR is unsupported (detected via WARL) so use NAPOT instead + self.gdb.p("$pmpcfg0=0x1f") # NAPOT, R, W, X + self.gdb.p("$pmpaddr0=0x" + "f" * (self.hart.xlen // 4)) + else: + # pmcfg0 readback matches write, so TOR is supported. + self.gdb.p("$pmpaddr0=0x%x" % + ((self.hart.ram + self.hart.ram_size) >> 2)) except CouldNotFetch: # PMP registers are optional pass |