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

Reply via email to