Commit c169c906a374774bde50834f360821ec6ba9b53a

Authored by bellard
1 parent 17444c9c

added undocumented FPU ops support


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1156 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 12 additions and 0 deletions
target-i386/translate.c
@@ -2958,6 +2958,8 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start) @@ -2958,6 +2958,8 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
2958 gen_op_fmov_ST0_STN((opreg + 1) & 7); 2958 gen_op_fmov_ST0_STN((opreg + 1) & 7);
2959 break; 2959 break;
2960 case 0x09: /* fxchg sti */ 2960 case 0x09: /* fxchg sti */
  2961 + case 0x29: /* fxchg4 sti, undocumented op */
  2962 + case 0x39: /* fxchg7 sti, undocumented op */
2961 gen_op_fxchg_ST0_STN(opreg); 2963 gen_op_fxchg_ST0_STN(opreg);
2962 break; 2964 break;
2963 case 0x0a: /* grp d9/2 */ 2965 case 0x0a: /* grp d9/2 */
@@ -3104,10 +3106,13 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start) @@ -3104,10 +3106,13 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
3104 } 3106 }
3105 break; 3107 break;
3106 case 0x02: /* fcom */ 3108 case 0x02: /* fcom */
  3109 + case 0x22: /* fcom2, undocumented op */
3107 gen_op_fmov_FT0_STN(opreg); 3110 gen_op_fmov_FT0_STN(opreg);
3108 gen_op_fcom_ST0_FT0(); 3111 gen_op_fcom_ST0_FT0();
3109 break; 3112 break;
3110 case 0x03: /* fcomp */ 3113 case 0x03: /* fcomp */
  3114 + case 0x23: /* fcomp3, undocumented op */
  3115 + case 0x32: /* fcomp5, undocumented op */
3111 gen_op_fmov_FT0_STN(opreg); 3116 gen_op_fmov_FT0_STN(opreg);
3112 gen_op_fcom_ST0_FT0(); 3117 gen_op_fcom_ST0_FT0();
3113 gen_op_fpop(); 3118 gen_op_fpop();
@@ -3163,6 +3168,9 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start) @@ -3163,6 +3168,9 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
3163 gen_op_fmov_STN_ST0(opreg); 3168 gen_op_fmov_STN_ST0(opreg);
3164 break; 3169 break;
3165 case 0x2b: /* fstp sti */ 3170 case 0x2b: /* fstp sti */
  3171 + case 0x0b: /* fstp1 sti, undocumented op */
  3172 + case 0x3a: /* fstp8 sti, undocumented op */
  3173 + case 0x3b: /* fstp9 sti, undocumented op */
3166 gen_op_fmov_STN_ST0(opreg); 3174 gen_op_fmov_STN_ST0(opreg);
3167 gen_op_fpop(); 3175 gen_op_fpop();
3168 break; 3176 break;
@@ -3187,6 +3195,10 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start) @@ -3187,6 +3195,10 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
3187 goto illegal_op; 3195 goto illegal_op;
3188 } 3196 }
3189 break; 3197 break;
  3198 + case 0x38: /* ffreep sti, undocumented op */
  3199 + gen_op_ffree_STN(opreg);
  3200 + gen_op_fpop();
  3201 + break;
3190 case 0x3c: /* df/4 */ 3202 case 0x3c: /* df/4 */
3191 switch(rm) { 3203 switch(rm) {
3192 case 0: 3204 case 0: