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)