aboutsummaryrefslogtreecommitdiff
path: root/target-sparc/translate.c
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-09-30 16:37:00 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-09-30 16:37:00 +0000
commitee0b03fd85652ddd04d3499f03e6821732862308 (patch)
tree1af02344cc197754272baabacc0364fd6d161ba6 /target-sparc/translate.c
parenta902d8866440c8f57c8e3c546e97de286f627408 (diff)
Fix Sparc64 wrasr instructions
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3297 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc/translate.c')
-rw-r--r--target-sparc/translate.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index d12a356c60..0cffa9e52e 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -2043,9 +2043,11 @@ static void disas_sparc_insn(DisasContext * dc)
break;
#else
case 0x2: /* V9 wrccr */
+ gen_op_xor_T1_T0();
gen_op_wrccr();
break;
case 0x3: /* V9 wrasi */
+ gen_op_xor_T1_T0();
gen_op_movl_env_T0(offsetof(CPUSPARCState, asi));
break;
case 0x6: /* V9 wrfprs */
@@ -2066,6 +2068,7 @@ static void disas_sparc_insn(DisasContext * dc)
case 0x13: /* Graphics Status */
if (gen_trap_ifnofpu(dc))
goto jmp_insn;
+ gen_op_xor_T1_T0();
gen_op_movtl_env_T0(offsetof(CPUSPARCState, gsr));
break;
case 0x17: /* Tick compare */
@@ -2073,6 +2076,7 @@ static void disas_sparc_insn(DisasContext * dc)
if (!supervisor(dc))
goto illegal_insn;
#endif
+ gen_op_xor_T1_T0();
gen_op_movtl_env_T0(offsetof(CPUSPARCState, tick_cmpr));
gen_op_wrtick_cmpr();
break;
@@ -2081,6 +2085,7 @@ static void disas_sparc_insn(DisasContext * dc)
if (!supervisor(dc))
goto illegal_insn;
#endif
+ gen_op_xor_T1_T0();
gen_op_wrstick();
break;
case 0x19: /* System tick compare */
@@ -2088,6 +2093,7 @@ static void disas_sparc_insn(DisasContext * dc)
if (!supervisor(dc))
goto illegal_insn;
#endif
+ gen_op_xor_T1_T0();
gen_op_movtl_env_T0(offsetof(CPUSPARCState, stick_cmpr));
gen_op_wrstick_cmpr();
break;