diff options
author | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-05-25 18:50:28 +0000 |
---|---|---|
committer | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-05-25 18:50:28 +0000 |
commit | 20c9f095c4536e64e60432a5c72fce38e8306cbb (patch) | |
tree | fe68375301d78efc0eb73138da36199a00bcde7a /target-sparc/translate.c | |
parent | 8d05ea8a33c9d450d2a3079e967c69ea38ec28ba (diff) |
Implement Sparc64 CPU timers using ptimers
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2860 c046a42c-6fe2-441c-8c8c-71466251a162
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: |