From: Stuart B. <zu...@us...> - 2007-03-19 02:41:46
|
Update of /cvsroot/hppaqemu/hppaqemu/target-hppa In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv9102 Modified Files: translate.c Log Message: Condition tests should be generated if c or f is set. (Was checking that they were both set, which was incorrect.) Index: translate.c =================================================================== RCS file: /cvsroot/hppaqemu/hppaqemu/target-hppa/translate.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- translate.c 16 Mar 2007 20:58:57 -0000 1.28 +++ translate.c 17 Mar 2007 00:30:51 -0000 1.29 @@ -1341,32 +1341,32 @@ /* Opcode Extensions */ switch(ext6) { case 0x18: /* ADD */ - if (c && f) + if (c || f) gen_cond_add[c](); gen_op_add_T1_T0_cc(); break; case 0x38: /* ADDO */ gen_op_eval_add_sv(); /* gen_op_overflow_trap(); */ - if (c && f) + if (c || f) gen_cond_add[c](); gen_op_add_T1_T0_cc(); break; case 0x1C: /* ADDC */ - if (c && f) + if (c || f) gen_cond_addc[c](); gen_op_addc_T1_T0_cc(); break; case 0x3C: /* ADDCO */ gen_op_eval_addc_sv(); /* gen_op_overflow_trap(); */ - if (c && f) + if (c || f) gen_cond_addc[c](); gen_op_addc_T1_T0_cc(); break; case 0x19: /* SH1ADD */ gen_shift_T0(1); - if (c && f) + if (c || f) gen_cond_add[c](); /* FIXME */ gen_op_add_T1_T0_cc(); break; @@ -1374,13 +1374,13 @@ gen_op_eval_add_sv(); /* FIXME */ /* gen_op_overflow_trap(); */ gen_shift_T0(1); - if (c && f) + if (c || f) gen_cond_add[c](); /* FIXME */ gen_op_add_T1_T0_cc(); break; case 0x1a: /* SH2ADD */ gen_shift_T0(2); - if (c && f) + if (c || f) gen_cond_add[c](); /* FIXME */ gen_op_add_T1_T0_cc(); break; @@ -1388,13 +1388,13 @@ gen_op_eval_add_sv(); /* FIXME */ /* gen_op_overflow_trap(); */ gen_shift_T0(2); - if (c && f) + if (c || f) gen_cond_add[c](); /* FIXME */ gen_op_add_T1_T0_cc(); break; case 0x1b: /* SH3ADD */ gen_shift_T0(3); - if (c && f) + if (c || f) gen_cond_add[c](); /* FIXME */ gen_op_add_T1_T0_cc(); break; @@ -1402,24 +1402,24 @@ gen_op_eval_add_sv(); /* FIXME */ /* gen_op_overflow_trap(); */ gen_shift_T0(3); - if (c && f) + if (c || f) gen_cond_add[c](); /* FIXME */ gen_op_add_T1_T0_cc(); break; case 0x10: /* SUB */ - if (c && f) + if (c || f) gen_cond_sub[c](); gen_op_sub_T1_T0_cc(); break; case 0x30: /* SUBO */ gen_op_eval_sub_sv(); /* gen_op_overflow_trap(); */ - if (c && f) + if (c || f) gen_cond_sub[c](); gen_op_sub_T1_T0_cc(); break; case 0x13: /* SUBT */ - if (c && f) + if (c || f) gen_cond_sub[c](); /* gen_cond_trap(); */ gen_op_sub_T1_T0_cc(); @@ -1427,91 +1427,91 @@ case 0x33: /* SUBTO */ gen_op_eval_sub_sv(); /* gen_op_overflow_trap(); */ - if (c && f) + if (c || f) gen_cond_sub[c](); /* gen_cond_trap(); */ gen_op_sub_T1_T0_cc(); break; case 0x14: /* SUBB */ - if (c && f) + if (c || f) gen_cond_subb[c](); gen_op_subb_T1_T0_cc(); break; case 0x34: /* SUBBO */ gen_op_eval_subb_sv(); /* gen_op_overflow_trap(); */ - if (c && f) + if (c || f) gen_cond_subb[c](); gen_op_subb_T1_T0_cc(); break; case 0x11: /* DS */ - /* if (c && f) + /* if (c || f) gen_cond_ds[c](); */ gen_op_ds_T1_T0(); break; case 0x00: /* ANDCM */ gen_op_andcm_T1_T0(); - if (c && f) + if (c || f) gen_cond_log[c](); break; case 0x08: /* AND */ gen_op_and_T1_T0(); - if (c && f) + if (c || f) gen_cond_log[c](); break; case 0x09: /* OR */ gen_op_or_T1_T0(); - if (c && f) + if (c || f) gen_cond_log[c](); break; case 0x0A: /* XOR */ gen_op_xor_T1_T0(); - if (c && f) + if (c || f) gen_cond_log[c](); break; case 0x0E: /* UXOR */ gen_op_uxor_T1_T0(); - if (c && f) + if (c || f) gen_cond_unit[c](); break; case 0x22: /* COMCLR */ - if (c && f) + if (c || f) gen_cond_sub[c](); gen_movl_T0_im(0); break; case 0x26: /* UADDCM */ /* FIXME: 'c' specifies unit size */ gen_op_uaddcm_T1_T0(); - if (c && f) + if (c || f) gen_cond_unit[c](); break; case 0x27: /* UADDCMT */ /* FIXME: 'c' specifies unit size */ gen_op_uaddcm_T1_T0(); - if (c && f) + if (c || f) gen_cond_unit[c](); /* gen_cond_trap(); */ break; case 0x28: /* ADDL */ - if (c && f) + if (c || f) gen_cond_add[c](); gen_op_addl_T1_T0(); break; case 0x29: /* SH1ADDL */ gen_shift_T0(1); - if (c && f) + if (c || f) gen_cond_add[c](); gen_op_addl_T1_T0(); break; case 0x2A: /* SH2ADDL */ gen_shift_T0(2); - if (c && f) + if (c || f) gen_cond_add[c](); gen_op_addl_T1_T0(); break; case 0x2B: /* SH3ADDL */ gen_shift_T0(3); - if (c && f) + if (c || f) gen_cond_add[c](); gen_op_addl_T1_T0(); break; @@ -1536,7 +1536,7 @@ break; } gen_movl_reg_T0(t); - if (c && f) + if (c || f) gen_nullify_cond(dc, (long)dc->tb, f); break; } |