target/hexagon: Decode trap1, rte as COF

Also: handle rte instructions at the end of the packet.

Reviewed-by: Taylor Simpson <ltaylorsimpson@gmail.com>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
This commit is contained in:
Brian Cain
2026-06-22 15:28:44 -07:00
committed by Brian Cain
parent f7e9a5ab26
commit 229f9cb03e

View File

@@ -185,6 +185,8 @@ static bool decode_opcode_can_jump(int opcode)
if ((GET_ATTRIB(opcode, A_JUMP)) ||
(GET_ATTRIB(opcode, A_CALL)) ||
(opcode == J2_trap0) ||
(opcode == J2_trap1) ||
(opcode == J2_rte) ||
(opcode == J2_pause)) {
/* Exception to A_JUMP attribute */
if (opcode == J4_hintjumpr) {
@@ -363,6 +365,18 @@ static void decode_shuffle_for_execution(Packet *packet)
break;
}
}
/*
* And at the very very very end, move any RTE's, since they update
* user/supervisor mode.
*/
#if !defined(CONFIG_USER_ONLY)
for (i = 0; i < last_insn; i++) {
if (packet->insn[i].opcode == J2_rte) {
decode_send_insn_to(packet, i, last_insn);
break;
}
}
#endif
}
static void