Commit d8d24f5360 for qemu.org
commit d8d24f53600e4a9129f2197168916e960ee788d6
Author: Marco Liebel <marco.liebel@oss.qualcomm.com>
Date: Mon Nov 9 15:21:42 2026 -0800
target/hexagon: leave stack exchange to virtual SPSWAP
Virtual RTE must restore status and branch to GELR without swapping
SP and GOSP. An implicit swap undoes the explicit exit SPSWAP and
resumes guest user code on the kernel stack.
Signed-off-by: Marco Liebel <marco.liebel@oss.qualcomm.com>
Reviewed-by: Brian Cain <brian.cain@oss.qualcomm.com>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
diff --git a/target/hexagon/hexswi.c b/target/hexagon/hexswi.c
index f22d4a7751..acc68aa6c2 100644
--- a/target/hexagon/hexswi.c
+++ b/target/hexagon/hexswi.c
@@ -831,12 +831,6 @@ void hexagon_vmrte(CPUHexagonState *env)
uint32_t old_ssr = env->t_sreg[HEX_SREG_SSR];
CPUState *cs = env_cpu(env);
- if (GET_FIELD(GSR_UM, gsr)) {
- uint32_t sp = env->gpr[HEX_REG_SP];
-
- env->gpr[HEX_REG_SP] = env->greg[HEX_GREG_GOSP];
- env->greg[HEX_GREG_GOSP] = sp;
- }
SET_SYSTEM_FIELD(env, HEX_SREG_SSR, SSR_SS,
GET_FIELD(GSR_SS, gsr));
SET_SYSTEM_FIELD(env, HEX_SREG_SSR, SSR_GM,