target/aarch64: fix last_run_control_op on SMP

aarch64_resume() set the last_run_control_op on the current core
only and left last_run_control_op as is on the rest of the SMP group.
It caused semihosting call on other cores to stop because
last_run_control_op sticked on ARMV8_RUNCONTROL_STEP

Set last_run_control_op to ARMV8_RUNCONTROL_RESUME on all cores
in the SMP group.

Change-Id: I55a97bb1f7ea25bfc5937c3cc846532cdf390064
Signed-off-by: Tomas Vanek <vanekt@fbl.cz>
Reviewed-on: https://review.openocd.org/c/openocd/+/9247
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
This commit is contained in:
Tomas Vanek
2025-11-21 12:39:56 +01:00
committed by Antonio Borneo
parent c2fdc38d32
commit 0eecf4d21d

View File

@@ -955,6 +955,8 @@ static int aarch64_resume(struct target *target, bool current,
}
if (curr->state != TARGET_RUNNING) {
struct armv8_common *curr_armv8 = target_to_armv8(curr);
curr_armv8->last_run_control_op = ARMV8_RUNCONTROL_RESUME;
curr->state = TARGET_RUNNING;
curr->debug_reason = DBG_REASON_NOTHALTED;
target_call_event_callbacks(curr, TARGET_EVENT_RESUMED);