summaryrefslogtreecommitdiff
path: root/target-sparc/translate.c
diff options
context:
space:
mode:
authorblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-03-23 20:01:20 +0000
committerblueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162>2007-03-23 20:01:20 +0000
commite32f879d1b5cbde3c996d6db5e15e487ae3064a5 (patch)
treec6a148aa89b708d4c7df165f24d5b5a98a54fc27 /target-sparc/translate.c
parent426613dbf8cd1120f9e47fb636c4c03bc1ef586c (diff)
downloadqemu-e32f879d1b5cbde3c996d6db5e15e487ae3064a5.tar.gz
Sparc tagged operations (Aurelien Jarno)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2531 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc/translate.c')
-rw-r--r--target-sparc/translate.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/target-sparc/translate.c b/target-sparc/translate.c
index 74a0a2cb89..7486c277bb 100644
--- a/target-sparc/translate.c
+++ b/target-sparc/translate.c
@@ -27,7 +27,6 @@
Optimize synthetic instructions
Optional alignment check
128-bit float
- Tagged add/sub
*/
#include <stdarg.h>
@@ -1833,10 +1832,21 @@ static void disas_sparc_insn(DisasContext * dc)
} else {
switch (xop) {
case 0x20: /* taddcc */
+ gen_op_tadd_T1_T0_cc();
+ gen_movl_T0_reg(rd);
+ break;
case 0x21: /* tsubcc */
+ gen_op_tsub_T1_T0_cc();
+ gen_movl_T0_reg(rd);
+ break;
case 0x22: /* taddcctv */
+ gen_op_tadd_T1_T0_ccTV();
+ gen_movl_T0_reg(rd);
+ break;
case 0x23: /* tsubcctv */
- goto illegal_insn;
+ gen_op_tsub_T1_T0_ccTV();
+ gen_movl_T0_reg(rd);
+ break;
case 0x24: /* mulscc */
gen_op_mulscc_T1_T0();
gen_movl_T0_reg(rd);