diff options
-rw-r--r-- | target-sparc/op.c | 9 | ||||
-rw-r--r-- | target-sparc/translate.c | 2 |
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; |