@samitouri / QOSamiQemu / commits / f4b680feae

target/hexagon: Implement {c,}swi helpers

{c,}swi are the "software interrupt"/"Cancel pending interrupts" instructions. Reviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com> Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>

Brian Cain committed Jun 22, 2026 at 15:28 UTC f4b680feaec2e4ad5f9d372b76ca484368954931
1 file changed +6 -2
target/hexagon/op_helper.c
+6 -2
@@ -24,6 +24,7 @@
24 #include "cpu.h"
25 #include "exec/helper-proto.h"
26 #include "fpu/softfloat.h"
27 +#include "exec/cpu-interrupt.h"
28 #include "internal.h"
29 #include "macros.h"
30 #include "sys_macros.h"
@@ -36,6 +37,7 @@
37 #include "cpu_helper.h"
38 #include "translate.h"
39 #ifndef CONFIG_USER_ONLY
40 +#include "hex_interrupts.h"
41 #include "hexswi.h"
42 #endif
43
@@ -1403,12 +1405,14 @@ void HELPER(siad)(CPUHexagonState *env, uint32_t mask)
1405
1406 void HELPER(swi)(CPUHexagonState *env, uint32_t mask)
1407 {
1406 - g_assert_not_reached();
1408 + BQL_LOCK_GUARD();
1409 + hex_raise_interrupts(env, mask, CPU_INTERRUPT_SWI);
1410 }
1411
1412 void HELPER(cswi)(CPUHexagonState *env, uint32_t mask)
1413 {
1411 - g_assert_not_reached();
1414 + BQL_LOCK_GUARD();
1415 + hex_clear_interrupts(env, mask, CPU_INTERRUPT_SWI);
1416 }
1417
1418 void HELPER(iassignw)(CPUHexagonState *env, uint32_t src)