wrwim insn fix (Paul Robinson)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2200 c046a42c-6fe2-441c-8c8c-71466251a162
diff --git a/target-sparc/op.c b/target-sparc/op.c
index 7ea209e..1ec15d2 100644
--- a/target-sparc/op.c
+++ b/target-sparc/op.c
@@ -844,6 +844,15 @@
     FORCE_RET();
 }
 
+void OPPROTO op_wrwim(void)
+{
+#if NWINDOWS == 32
+    env->wim = T0;
+#else
+    env->wim = T0 & ((1 << NWINDOWS) - 1);
+#endif
+}
+
 void OPPROTO op_rett(void)
 {
     helper_rett();
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index a522d77..455dd17 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -2005,7 +2005,7 @@
 				goto illegal_insn;
 			    }
 #else
-			    gen_op_movl_env_T0(offsetof(CPUSPARCState, wim));
+			    gen_op_wrwim();
 #endif
                         }
                         break;