target/hexagon: check exception_index in has_work

Without this check, a halted thread that gets an NMI while
its modectl E-bit is still set won't wake if no interrupt_request bits
happen to be pending.

Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
This commit is contained in:
Brian Cain committed 2026-10-27 07:23:27 -07:00
1 parent d9c1429f7c
commit 30311dc0e5
1 file changed
+3
+3
View File
@@ -430,6 +430,9 @@ static bool hexagon_cpu_has_work(CPUState *cs)
{
CPUHexagonState *env = cpu_env(cs);
if (qatomic_read(&cs->exception_index) != HEX_EVENT_NONE) {
return true;
}
return hexagon_thread_is_enabled(env) &&
(cs->interrupt_request & (CPU_INTERRUPT_HARD | CPU_INTERRUPT_SWI
| CPU_INTERRUPT_K0_UNLOCK | CPU_INTERRUPT_TLB_UNLOCK