aboutsummaryrefslogtreecommitdiff
path: root/debug/gdbserver.py
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2017-07-20 20:43:18 -0700
committerTim Newsome <tim@sifive.com>2017-07-20 20:43:18 -0700
commite9de1c77dda6c191cf871d1ad2b43448e83077b7 (patch)
treeb4d9817c7d539a69d1ac765eb6781a42f25d713e /debug/gdbserver.py
parent8ec0e8c02d1b1db0112c8564888f2d8dd88cbe15 (diff)
downloadriscv-tests-e9de1c77dda6c191cf871d1ad2b43448e83077b7.zip
riscv-tests-e9de1c77dda6c191cf871d1ad2b43448e83077b7.tar.gz
riscv-tests-e9de1c77dda6c191cf871d1ad2b43448e83077b7.tar.bz2
Add back code to clean up triggers in entry.S
Then for targets that can't handle this because they don't implement hmode, add a target setting that allows that to be specified.
Diffstat (limited to 'debug/gdbserver.py')
-rwxr-xr-xdebug/gdbserver.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/debug/gdbserver.py b/debug/gdbserver.py
index f6c61c3..80985fd 100755
--- a/debug/gdbserver.py
+++ b/debug/gdbserver.py
@@ -329,6 +329,12 @@ class Hwbp1(DebugTest):
if self.target.instruction_hardware_breakpoint_count < 1:
return 'not_applicable'
+ if not self.target.honors_tdata1_hmode:
+ # Run to main before setting the breakpoint, because startup code
+ # will otherwise clear the trigger that we set.
+ self.gdb.b("main")
+ self.gdb.c()
+
self.gdb.hbreak("rot13")
# The breakpoint should be hit exactly 2 times.
for _ in range(2):
@@ -560,6 +566,9 @@ class TriggerStoreAddressInstant(TriggerTest):
assertEqual(self.gdb.p("$a0"), self.gdb.p("&data"))
class TriggerDmode(TriggerTest):
+ def early_applicable(self):
+ return self.target.honors_tdata1_hmode
+
def check_triggers(self, tdata1_lsbs, tdata2):
dmode = 1 << (self.target.xlen-5)