Skip to content

Commit

Permalink
Merge pull request #1165 from aap-sc/aap-sc/resume_debug_errors
Browse files Browse the repository at this point in the history
target/riscv: detailed error messages for cases when resume operation fails
  • Loading branch information
en-sc authored Nov 18, 2024
2 parents 463d1b0 + faffae0 commit f51900b
Showing 1 changed file with 17 additions and 5 deletions.
22 changes: 17 additions & 5 deletions src/target/riscv/riscv-013.c
Original file line number Diff line number Diff line change
Expand Up @@ -5392,7 +5392,9 @@ static int riscv013_step_or_resume_current_hart(struct target *target,
LOG_TARGET_ERROR(target, "Hart is not halted!");
return ERROR_FAIL;
}
LOG_TARGET_DEBUG(target, "resuming (for step?=%d)", step);

LOG_TARGET_DEBUG(target, "resuming (operation=%s)",
step ? "single-step" : "resume");

if (riscv_reg_flush_all(target) != ERROR_OK)
return ERROR_FAIL;
Expand Down Expand Up @@ -5425,16 +5427,26 @@ static int riscv013_step_or_resume_current_hart(struct target *target,
return ERROR_OK;
}

LOG_TARGET_ERROR(target, "Failed to %s. dmstatus=0x%08x",
step ? "single-step" : "resume", dmstatus);

dm_write(target, DM_DMCONTROL, dmcontrol);
LOG_TARGET_ERROR(target,
" cancelling the resume request (dmcontrol.resumereq <- 0)");

LOG_TARGET_ERROR(target, "unable to resume");
if (dmstatus_read(target, &dmstatus, true) != ERROR_OK)
return ERROR_FAIL;
LOG_TARGET_ERROR(target, " dmstatus=0x%08x", dmstatus);

LOG_TARGET_ERROR(target, " dmstatus after cancellation=0x%08x", dmstatus);

if (step) {
LOG_TARGET_ERROR(target, " was stepping, halting");
riscv_halt(target);
LOG_TARGET_ERROR(target,
" trying to recover from a failed single-step, by requesting halt");
if (riscv_halt(target) == ERROR_OK)
LOG_TARGET_ERROR(target, " halt completed after failed single-step");
else
LOG_TARGET_ERROR(target, " could not halt, something is wrong with the taget");
// TODO: returning ERROR_OK is questionable, this code needs to be revised
return ERROR_OK;
}

Expand Down

0 comments on commit f51900b

Please sign in to comment.