aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Newsome <tim@sifive.com>2020-07-07 11:55:57 -0700
committerGitHub <noreply@github.com>2020-07-07 11:55:57 -0700
commit8b929c64970ccb4e1d2ebda7619af24e81b70b3a (patch)
tree0625cb5f48f2c67a23fda26d6e9200c51929561b
parentbbfc666eba84f7133510fa0c5cb1d2d9e7a49bce (diff)
downloadriscv-openocd-8b929c64970ccb4e1d2ebda7619af24e81b70b3a.zip
riscv-openocd-8b929c64970ccb4e1d2ebda7619af24e81b70b3a.tar.gz
riscv-openocd-8b929c64970ccb4e1d2ebda7619af24e81b70b3a.tar.bz2
Triggers with type=0 aren't real. (#496)
Fixes #491. Change-Id: Id01adcc68d8c7d95f7e86d49d5d2b0c97c9fb1b0
-rw-r--r--src/target/riscv/riscv.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/target/riscv/riscv.c b/src/target/riscv/riscv.c
index 6640c2d..e213ffa 100644
--- a/src/target/riscv/riscv.c
+++ b/src/target/riscv/riscv.c
@@ -3339,7 +3339,9 @@ int riscv_enumerate_triggers(struct target *target)
for (unsigned t = 0; t < RISCV_MAX_TRIGGERS; ++t) {
r->trigger_count[hartid] = t;
- riscv_set_register_on_hart(target, hartid, GDB_REGNO_TSELECT, t);
+ /* If we can't write tselect, then this hart does not support triggers. */
+ if (riscv_set_register_on_hart(target, hartid, GDB_REGNO_TSELECT, t) != ERROR_OK)
+ break;
uint64_t tselect_rb;
result = riscv_get_register_on_hart(target, &tselect_rb, hartid,
GDB_REGNO_TSELECT);
@@ -3357,6 +3359,8 @@ int riscv_enumerate_triggers(struct target *target)
return result;
int type = get_field(tdata1, MCONTROL_TYPE(riscv_xlen(target)));
+ if (type == 0)
+ break;
switch (type) {
case 1:
/* On these older cores we don't support software using