Debug: Use the --32 and --64 command line arguments (#97)
authorMegan Wachs <megan@sifive.com>
Fri, 17 Nov 2017 00:34:02 +0000 (16:34 -0800)
committerGitHub <noreply@github.com>
Fri, 17 Nov 2017 00:34:02 +0000 (16:34 -0800)
* Debug: Actually use the --32 and --64 command line arguments

* debug: make XLEN mismatch message clearer

debug/gdbserver.py
debug/targets.py
debug/testlib.py

index 3e61449ce8daa9550a127bdb3060fcf27ebb8db0..09938d3f1b049b4e44674be4aa901285c6fdff41 100755 (executable)
@@ -869,12 +869,8 @@ def main():
     global parsed   # pylint: disable=global-statement
     parsed = parser.parse_args()
     target = targets.target(parsed)
-
     testlib.print_log_names = parsed.print_log_names
 
-    if parsed.xlen:
-        target.xlen = parsed.xlen
-
     module = sys.modules[__name__]
 
     return testlib.run_all_tests(module, target, parsed)
index eb6862bd5670917803f8ee1ff3fff3648e1205fe..e92b5932c00ff453542d8165bc136a06763b34d7 100644 (file)
@@ -180,5 +180,10 @@ def target(parsed):
 
     t = found[0](parsed.target, parsed)
     assert t.harts, "%s doesn't have any harts defined!" % t.name
+    for h in t.harts :
+        if (h.xlen == 0):
+            h.xlen = parsed.xlen
+        elif (h.xlen != parsed.xlen):
+            raise Exception("The target has an XLEN of %d, but the command line specified an XLEN of %d. They must match." % (h.xlen, parsed.xlen))
 
     return t
index 8d051007fe49298242818042685fd7cc9ba3446b..b19eafcb865f6bfa97f51674930137843541e86c 100644 (file)
@@ -825,16 +825,22 @@ class ExamineTarget(GdbTest):
             hart.misa = self.gdb.p("$misa")
 
             txt = "RV"
-            if (hart.misa >> 30) == 1:
-                txt += "32"
-            elif (hart.misa >> 62) == 2:
-                txt += "64"
-            elif (hart.misa >> 126) == 3:
-                txt += "128"
+            misa_xlen = 0
+            if ((hart.misa & 0xFFFFFFFF) >> 30) == 1:
+                misa_xlen = 32
+            elif ((hart.misa & 0xFFFFFFFFFFFFFFFF) >> 62) == 2:
+                misa_xlen = 64
+            elif ((hart.misa & 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF) >> 126) == 3:
+                misa_xlen = 128
             else:
                 raise TestFailed("Couldn't determine XLEN from $misa (0x%x)" %
                         self.hart.misa)
 
+            if (misa_xlen != hart.xlen):
+                raise TestFailed("MISA reported XLEN of %d but we were expecting XLEN of %d\n" % (misa_xlen, hart.xlen))
+
+            txt += ("%d" % misa_xlen)
+
             for i in range(26):
                 if hart.misa & (1<<i):
                     txt += chr(i + ord('A'))