diff options
author | Evgeniy Naydanov <109669442+en-sc@users.noreply.github.com> | 2024-04-27 16:42:29 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-27 16:42:29 +0300 |
commit | 9563cd67e650426ceaac1d330fda84f7ad1b26a6 (patch) | |
tree | 7fa26b903853c4975ce9cf9d8ec107d852c0c479 | |
parent | e51f8695ed886f9d84cd7a71408822bfb800ac40 (diff) | |
parent | 88f7650a6d463065daf758bd23cd0f798ab85604 (diff) | |
download | riscv-openocd-9563cd67e650426ceaac1d330fda84f7ad1b26a6.zip riscv-openocd-9563cd67e650426ceaac1d330fda84f7ad1b26a6.tar.gz riscv-openocd-9563cd67e650426ceaac1d330fda84f7ad1b26a6.tar.bz2 |
Merge pull request #1055 from aap-sc/aap-sc/bp_unitialized
target/riscv: use breakpoint_hw_set/watchpoint_set to properly initialize bp/wp descriptor
-rw-r--r-- | src/target/riscv/riscv.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/target/riscv/riscv.c b/src/target/riscv/riscv.c index 8fe416d..2365e82 100644 --- a/src/target/riscv/riscv.c +++ b/src/target/riscv/riscv.c @@ -1415,6 +1415,7 @@ static int riscv_add_breakpoint(struct target *target, struct breakpoint *breakp TARGET_PRIxADDR, breakpoint->length, breakpoint->address); return ERROR_FAIL; } + breakpoint->is_set = true; } else if (breakpoint->type == BKPT_HARD) { struct trigger trigger; @@ -1422,12 +1423,13 @@ static int riscv_add_breakpoint(struct target *target, struct breakpoint *breakp int const result = add_trigger(target, &trigger); if (result != ERROR_OK) return result; + + int trigger_idx = find_first_trigger_by_id(target, breakpoint->unique_id); + breakpoint_hw_set(breakpoint, trigger_idx); } else { LOG_TARGET_INFO(target, "OpenOCD only supports hardware and software breakpoints."); return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; } - - breakpoint->is_set = true; return ERROR_OK; } @@ -1521,7 +1523,9 @@ int riscv_add_watchpoint(struct target *target, struct watchpoint *watchpoint) int result = add_trigger(target, &trigger); if (result != ERROR_OK) return result; - watchpoint->is_set = true; + + int trigger_idx = find_first_trigger_by_id(target, watchpoint->unique_id); + watchpoint_set(watchpoint, trigger_idx); return ERROR_OK; } |