From b8dca93e4aae14a085d10e286a4296b65bd7543a 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) --- 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 7ea209ea..1ec15d28 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 a522d778..455dd171 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; -- 2.39.5