From c688a6eb185544444a50e07cade5166b2e23270e Mon Sep 17 00:00:00 2001 From: bellard Date: Mon, 23 Oct 2006 21:37:34 +0000 Subject: [PATCH] wrwim insn fix (Paul Robinson) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2200 c046a42c-6fe2-441c-8c8c-71466251a162 --- target-sparc/op.c | 9 +++++++++ target-sparc/translate.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) 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;