From: Stuart B. <zu...@us...> - 2007-03-09 23:46:42
|
Update of /cvsroot/hppaqemu/hppaqemu/target-hppa In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv29576 Modified Files: op.c translate.c Log Message: Rename add/sub ops that modify flags to end in '_cc'. Rename 'subc' op to 'subb' (should be borrow, not carry). Index: translate.c =================================================================== RCS file: /cvsroot/hppaqemu/hppaqemu/target-hppa/translate.c,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** translate.c 9 Mar 2007 15:57:31 -0000 1.11 --- translate.c 9 Mar 2007 23:46:36 -0000 1.12 *************** *** 824,828 **** switch(ext6) { case 0x18: /* ADD */ ! gen_op_add_T1_T0(); break; case 0x38: /* ADDO */ --- 824,828 ---- switch(ext6) { case 0x18: /* ADD */ ! gen_op_add_T1_T0_cc(); break; case 0x38: /* ADDO */ *************** *** 834,838 **** break; case 0x1C: /* ADDC */ ! gen_op_addc_T1_T0(); break; case 0x3C: /* ADDCO */ --- 834,838 ---- break; case 0x1C: /* ADDC */ ! gen_op_addc_T1_T0_cc(); break; case 0x3C: /* ADDCO */ *************** *** 841,845 **** case 0x19: /* SH1ADD */ gen_shift_T0(1); ! gen_op_add_T1_T0(); break; case 0x39: /* SH1ADDO */ --- 841,845 ---- case 0x19: /* SH1ADD */ gen_shift_T0(1); ! gen_op_add_T1_T0_cc(); break; case 0x39: /* SH1ADDO */ *************** *** 849,853 **** case 0x1a: /* SH2ADD */ gen_shift_T0(2); ! gen_op_add_T1_T0(); break; case 0x3a: /* SH2ADDO */ --- 849,853 ---- case 0x1a: /* SH2ADD */ gen_shift_T0(2); ! gen_op_add_T1_T0_cc(); break; case 0x3a: /* SH2ADDO */ *************** *** 857,861 **** case 0x1b: /* SH3ADD */ gen_shift_T0(3); ! gen_op_add_T1_T0(); break; case 0x3b: /* SH3ADDO */ --- 857,861 ---- case 0x1b: /* SH3ADD */ gen_shift_T0(3); ! gen_op_add_T1_T0_cc(); break; case 0x3b: /* SH3ADDO */ *************** *** 864,868 **** break; case 0x10: /* SUB */ ! gen_op_sub_T1_T0(); break; case 0x30: /* SUBO */ --- 864,868 ---- break; case 0x10: /* SUB */ ! gen_op_sub_T1_T0_cc(); break; case 0x30: /* SUBO */ *************** *** 876,880 **** break; case 0x14: /* SUBB */ ! gen_op_subb_T1_T0(); break; case 0x34: /* SUBBO */ --- 876,880 ---- break; case 0x14: /* SUBB */ ! gen_op_subb_T1_T0_cc(); break; case 0x34: /* SUBBO */ *************** *** 1146,1150 **** im11 = field_signext(insn, 0, 11); gen_movl_reg_T0(r); ! gen_op_sub_T1_T0(); break; } --- 1146,1150 ---- im11 = field_signext(insn, 0, 11); gen_movl_reg_T0(r); ! gen_op_sub_T1_T0_cc(); break; } Index: op.c =================================================================== RCS file: /cvsroot/hppaqemu/hppaqemu/target-hppa/op.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** op.c 9 Mar 2007 15:57:31 -0000 1.7 --- op.c 9 Mar 2007 23:46:35 -0000 1.8 *************** *** 370,374 **** /* TODO: lazy PSW */ ! void OPPROTO op_add_T1_T0(void) { target_ulong carry; --- 370,374 ---- /* TODO: lazy PSW */ ! void OPPROTO op_add_T1_T0_cc(void) { target_ulong carry; *************** *** 395,400 **** } /* TODO: lazy PSW */ ! void OPPROTO op_addc_T1_T0(void) { target_ulong carry; --- 395,405 ---- } + void OPPROTO op_add_T1_T0(void) + { + T0 += T1; + } + /* TODO: lazy PSW */ ! void OPPROTO op_addc_T1_T0_cc(void) { target_ulong carry; *************** *** 468,501 **** } - /* TODO: lazy PSW */ - void OPPROTO op_subc_T1_T0(void) - { - target_ulong borrow; - target_ulong tmp; - - tmp = T0; - T0 -= T1; - - /* subtract the borrow */ - if (!(env->psw & PSW_CB7)) { - T0 -= 1; - } - - /* calculate carry/borrow flags */ - borrow = (~tmp & T1) | (~(tmp ^ T1) & T0); - /* axxxbxxxcxxxdxxxexxxfxxxgxxxhxxx */ - borrow >>= 3; /* 000axxxbxxxcxxxdxxxexxxfxxxgxxxh */ - borrow &= 0x11111111; /* 000a000b000c000d000e000f000g000h */ - borrow |= borrow >> 3; /* 000a00ab00bc00cd00de00ef00fg00gh */ - borrow &= 0x03030303; /* 000000ab000000cd000000ef000000gh */ - borrow |= borrow >> 6; /* 000000ab0000abcd000000ef0000efgh */ - borrow &= 0x000f000f; /* 000000000000abcd000000000000efgh */ - borrow |= borrow >> 12; /* 000000000000abcd00000000abcdefgh */ - borrow &= 0x000000ff; /* 000000000000000000000000abcdefgh */ - - env->psw &= ~PSW_CB; - env->psw |= ~borrow << PSW_CB7_SHIFT; - } - void OPPROTO op_next_insn(void) { --- 473,476 ---- *************** *** 555,561 **** } void OPPROTO op_sub_T1_T0(void) { ! /* XXX */ } --- 530,561 ---- } + void OPPROTO op_sub_T1_T0_cc(void) + { + /* TODO: lazy PSW */ + target_ulong borrow; + target_ulong tmp; + + tmp = T0; + T0 -= T1; + + /* calculate carry/borrow flags */ + borrow = (~tmp & T1) | (~(tmp ^ T1) & T0); + /* axxxbxxxcxxxdxxxexxxfxxxgxxxhxxx */ + borrow >>= 3; /* 000axxxbxxxcxxxdxxxexxxfxxxgxxxh */ + borrow &= 0x11111111; /* 000a000b000c000d000e000f000g000h */ + borrow |= borrow >> 3; /* 000a00ab00bc00cd00de00ef00fg00gh */ + borrow &= 0x03030303; /* 000000ab000000cd000000ef000000gh */ + borrow |= borrow >> 6; /* 000000ab0000abcd000000ef0000efgh */ + borrow &= 0x000f000f; /* 000000000000abcd000000000000efgh */ + borrow |= borrow >> 12; /* 000000000000abcd00000000abcdefgh */ + borrow &= 0x000000ff; /* 000000000000000000000000abcdefgh */ + + env->psw &= ~PSW_CB; + env->psw |= ~borrow << PSW_CB7_SHIFT; + } + void OPPROTO op_sub_T1_T0(void) { ! T0 -= T1; } *************** *** 575,581 **** } ! void OPPROTO op_subb_T1_T0(void) { ! /* XXX */ } --- 575,606 ---- } ! void OPPROTO op_subb_T1_T0_cc(void) { ! /* TODO: lazy PSW */ ! target_ulong borrow; ! target_ulong tmp; ! ! tmp = T0; ! T0 -= T1; ! ! /* subtract the borrow */ ! if (!(env->psw & PSW_CB7)) { ! T0 -= 1; ! } ! ! /* calculate carry/borrow flags */ ! borrow = (~tmp & T1) | (~(tmp ^ T1) & T0); ! /* axxxbxxxcxxxdxxxexxxfxxxgxxxhxxx */ ! borrow >>= 3; /* 000axxxbxxxcxxxdxxxexxxfxxxgxxxh */ ! borrow &= 0x11111111; /* 000a000b000c000d000e000f000g000h */ ! borrow |= borrow >> 3; /* 000a00ab00bc00cd00de00ef00fg00gh */ ! borrow &= 0x03030303; /* 000000ab000000cd000000ef000000gh */ ! borrow |= borrow >> 6; /* 000000ab0000abcd000000ef0000efgh */ ! borrow &= 0x000f000f; /* 000000000000abcd000000000000efgh */ ! borrow |= borrow >> 12; /* 000000000000abcd00000000abcdefgh */ ! borrow &= 0x000000ff; /* 000000000000000000000000abcdefgh */ ! ! env->psw &= ~PSW_CB; ! env->psw |= ~borrow << PSW_CB7_SHIFT; } |