aboutsummaryrefslogtreecommitdiff
path: root/target-sparc
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-10-23 21:37:34 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-10-23 21:37:34 +0000
commitc688a6eb185544444a50e07cade5166b2e23270e (patch)
tree99597e4b620366ea91787918ef376393f6f42eaf /target-sparc
parent27908725b9e2ccabc5089eb6f8975c6b277de14b (diff)
wrwim insn fix (Paul Robinson)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2200 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc')
-rw-r--r--target-sparc/op.c9
-rw-r--r--target-sparc/translate.c2
2 files changed, 10 insertions, 1 deletions
diff --git a/target-sparc/op.c b/target-sparc/op.c
index 7ea209ea86..1ec15d28b1 100644
--- a/target-sparc/op.c
+++ b/target-sparc/op.c
@@ -844,6 +844,15 @@ void OPPROTO op_wrpsr(void)
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 a522d778be..455dd171e4 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -2005,7 +2005,7 @@ static void disas_sparc_insn(DisasContext * dc)
goto illegal_insn;
}
#else
- gen_op_movl_env_T0(offsetof(CPUSPARCState, wim));
+ gen_op_wrwim();
#endif
}
break;