Skip to content

Commit

Permalink
Merge pull request #1154 from en-sc/en-sc/dcsr-ebreak-halt-on-reset
Browse files Browse the repository at this point in the history
target/riscv: avoid unnecessary `dcsr.ebreak*` update on reset
  • Loading branch information
en-sc authored Oct 30, 2024
2 parents e3a47ca + 3fe20e7 commit f9a1292
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/target/riscv/riscv-013.c
Original file line number Diff line number Diff line change
Expand Up @@ -2837,6 +2837,12 @@ static int assert_reset(struct target *target)
return riscv013_invalidate_cached_progbuf(target);
}

static bool dcsr_ebreak_config_equals_reset_value(const struct target *target)
{
RISCV_INFO(r);
return !(r->riscv_ebreakm || r->riscv_ebreaks || r->riscv_ebreaku);
}

static int deassert_reset(struct target *target)
{
RISCV013_INFO(info);
Expand Down Expand Up @@ -2903,7 +2909,7 @@ static int deassert_reset(struct target *target)
target->state = TARGET_RUNNING;
target->debug_reason = DBG_REASON_NOTHALTED;
}
info->dcsr_ebreak_is_set = false;
info->dcsr_ebreak_is_set = dcsr_ebreak_config_equals_reset_value(target);

/* Ack reset and clear DM_DMCONTROL_HALTREQ if previously set */
control = 0;
Expand Down

0 comments on commit f9a1292

Please sign in to comment.