aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2016-05-06 12:14:22 -0700
committerTim Newsome <tim@sifive.com>2016-05-23 12:12:12 -0700
commit9b8b9b69d0b2560b2727330d5a20b5133af140af (patch)
tree1225b5caae6af4e4874ea9a516f2684e87d7db40 /tests
parent7e5c1b420d0b332d6663a47182f9a472e400f663 (diff)
downloadspike-9b8b9b69d0b2560b2727330d5a20b5133af140af.zip
spike-9b8b9b69d0b2560b2727330d5a20b5133af140af.tar.gz
spike-9b8b9b69d0b2560b2727330d5a20b5133af140af.tar.bz2
Make -H halt the core right out of reset.
Added a test, too.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/gdbserver.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/gdbserver.py b/tests/gdbserver.py
index 2979606..0f9ee1d 100755
--- a/tests/gdbserver.py
+++ b/tests/gdbserver.py
@@ -6,6 +6,25 @@ import unittest
import tempfile
import time
+class InstantHaltTest(unittest.TestCase):
+ def setUp(self):
+ self.binary = testlib.compile("debug.c")
+ self.spike, self.port = testlib.spike(self.binary, halted=True)
+ self.gdb = testlib.Gdb()
+ self.gdb.command("file %s" % self.binary)
+ self.gdb.command("target extended-remote localhost:%d" % self.port)
+
+ def tearDown(self):
+ self.spike.kill()
+ self.spike.wait()
+
+ def test_instant_halt(self):
+ self.assertEqual(0x1000, self.gdb.p("$pc"))
+ # For some reason instret resets to 0.
+ self.assertLess(self.gdb.p("$instret"), 8)
+ self.gdb.command("stepi")
+ self.assertNotEqual(0x1000, self.gdb.p("$pc"))
+
class DebugTest(unittest.TestCase):
def setUp(self):
self.binary = testlib.compile("debug.c")
@@ -137,5 +156,22 @@ class RegsTest(unittest.TestCase):
self.assertEqual(9, self.gdb.p("$x1"))
self.assertEqual(9, self.gdb.p("$csr1"))
+#class MprvTest(unittest.TestCase):
+# def setUp(self):
+# self.binary = testlib.compile("mprv.S")
+# self.spike, self.port = testlib.spike(self.binary, halted=False)
+# self.gdb = testlib.Gdb()
+# self.gdb.command("file %s" % self.binary)
+# self.gdb.command("target extended-remote localhost:%d" % self.port)
+#
+# def tearDown(self):
+# self.spike.kill()
+# self.spike.wait()
+#
+# def test_mprv(self):
+# """Test that the debugger can access memory when MPRV is set."""
+# output = self.gdb.command("p/x data");
+# self.assertIn("0xbead", output)
+
if __name__ == '__main__':
unittest.main()