diff options
author | Tim Newsome <tim@sifive.com> | 2016-05-06 12:14:22 -0700 |
---|---|---|
committer | Tim Newsome <tim@sifive.com> | 2016-05-23 12:12:12 -0700 |
commit | 9b8b9b69d0b2560b2727330d5a20b5133af140af (patch) | |
tree | 1225b5caae6af4e4874ea9a516f2684e87d7db40 /tests | |
parent | 7e5c1b420d0b332d6663a47182f9a472e400f663 (diff) | |
download | spike-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-x | tests/gdbserver.py | 36 |
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() |