diff options
Diffstat (limited to 'target-sparc/translate.c')
-rw-r--r-- | target-sparc/translate.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c index 38d2a13195..8dbe3370fe 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -1202,7 +1202,7 @@ static void disas_sparc_insn(DisasContext * dc) gen_movl_T0_reg(rd); break; case 0x18: /* System tick */ - gen_op_rdtick(); // XXX + gen_op_rdstick(); gen_movl_T0_reg(rd); break; case 0x19: /* System tick compare */ @@ -1991,21 +1991,23 @@ static void disas_sparc_insn(DisasContext * dc) if (!supervisor(dc)) goto illegal_insn; #endif - gen_op_movtl_env_T0(offsetof(CPUSPARCState, tick_cmpr)); + gen_op_movtl_env_T0(offsetof(CPUSPARCState, tick_cmpr)); + gen_op_wrtick_cmpr(); break; case 0x18: /* System tick */ #if !defined(CONFIG_USER_ONLY) if (!supervisor(dc)) goto illegal_insn; #endif - gen_op_movtl_env_T0(offsetof(CPUSPARCState, stick_cmpr)); + gen_op_wrstick(); break; case 0x19: /* System tick compare */ #if !defined(CONFIG_USER_ONLY) if (!supervisor(dc)) goto illegal_insn; #endif - gen_op_movtl_env_T0(offsetof(CPUSPARCState, stick_cmpr)); + gen_op_movtl_env_T0(offsetof(CPUSPARCState, stick_cmpr)); + gen_op_wrstick_cmpr(); break; case 0x10: /* Performance Control */ @@ -2155,7 +2157,8 @@ static void disas_sparc_insn(DisasContext * dc) gen_op_movl_env_T0(offsetof(CPUSPARCState, htba)); break; case 31: // hstick_cmpr - gen_op_movl_env_T0(offsetof(CPUSPARCState, hstick_cmpr)); + gen_op_movtl_env_T0(offsetof(CPUSPARCState, hstick_cmpr)); + gen_op_wrhstick_cmpr(); break; case 6: // hver readonly default: |