Set MODECTL.E when start retires rather than when the target thread runs. This makes the thread state visible to software immediately after start.
Reviewed-by: Pierrick Bouvier <[email protected]> Signed-off-by: Brian Cain <[email protected]> --- target/hexagon/cpu_helper.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/hexagon/cpu_helper.c b/target/hexagon/cpu_helper.c index 6f172270865..6dc06401ad5 100644 --- a/target/hexagon/cpu_helper.c +++ b/target/hexagon/cpu_helper.c @@ -417,6 +417,9 @@ static void do_start_thread(CPUState *cs, run_on_cpu_data tbd) void hexagon_start_threads(CPUHexagonState *current_env, uint32_t mask) { CPUState *cs; + + BQL_LOCK_GUARD(); + CPU_FOREACH(cs) { CPUHexagonState *env = cpu_env(cs); if (!(mask & (0x1 << env->threadId))) { @@ -424,6 +427,7 @@ void hexagon_start_threads(CPUHexagonState *current_env, uint32_t mask) } if (current_env->threadId != env->threadId) { + set_enable_mask(env); async_safe_run_on_cpu(cs, do_start_thread, RUN_ON_CPU_NULL); } } -- 2.34.1
