target/riscv: fix riscv exec_progbuf for SMP targets

Currently, 'riscv exec_progbuf' command does not select active target.
So with multiple harts with a common debug module, program buffer may
be executed on an incorrect target.

Change-Id: Ic345b09b039c2b1e37e5b99a8534833ac2723277
Signed-off-by: Samuel Obuch <samuel.obuch@espressif.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/9312
Tested-by: jenkins
Reviewed-by: Evgeniy Naydanov <eugnay@gmail.com>
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
This commit is contained in:
Samuel Obuch
2025-12-11 15:15:27 +01:00
committed by Tomas Vanek
parent 67153cf3d5
commit ad0ed194f5

View File

@@ -5422,6 +5422,8 @@ static int riscv013_invalidate_cached_progbuf(struct target *target)
static int riscv013_execute_progbuf(struct target *target, uint32_t *cmderr)
{
if (dm013_select_target(target) != ERROR_OK)
return ERROR_FAIL;
uint32_t run_program = 0;
run_program = set_field(run_program, AC_ACCESS_REGISTER_AARSIZE, 2);
run_program = set_field(run_program, AC_ACCESS_REGISTER_POSTEXEC, 1);