diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 074ed21..3c183c6 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -2651,6 +2651,7 @@ static void disas_sparc_insn(DisasContext * dc)
 #ifdef TARGET_SPARC64
 	    } else if (xop == 0x39) { /* V9 return */
                 rs1 = GET_FIELD(insn, 13, 17);
+                save_state(dc);
 		gen_movl_reg_T0(rs1);
                 if (IS_IMM) {	/* immediate */
 		    rs2 = GET_FIELDs(insn, 19, 31);