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 2958 gen_op_fmov_ST0_STN((opreg + 1) & 7);
2959 2959 break;
2960 2960 case 0x09: /* fxchg sti */
  2961 + case 0x29: /* fxchg4 sti, undocumented op */
  2962 + case 0x39: /* fxchg7 sti, undocumented op */
2961 2963 gen_op_fxchg_ST0_STN(opreg);
2962 2964 break;
2963 2965 case 0x0a: /* grp d9/2 */
... ... @@ -3104,10 +3106,13 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
3104 3106 }
3105 3107 break;
3106 3108 case 0x02: /* fcom */
  3109 + case 0x22: /* fcom2, undocumented op */
3107 3110 gen_op_fmov_FT0_STN(opreg);
3108 3111 gen_op_fcom_ST0_FT0();
3109 3112 break;
3110 3113 case 0x03: /* fcomp */
  3114 + case 0x23: /* fcomp3, undocumented op */
  3115 + case 0x32: /* fcomp5, undocumented op */
3111 3116 gen_op_fmov_FT0_STN(opreg);
3112 3117 gen_op_fcom_ST0_FT0();
3113 3118 gen_op_fpop();
... ... @@ -3163,6 +3168,9 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
3163 3168 gen_op_fmov_STN_ST0(opreg);
3164 3169 break;
3165 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 3174 gen_op_fmov_STN_ST0(opreg);
3167 3175 gen_op_fpop();
3168 3176 break;
... ... @@ -3187,6 +3195,10 @@ static uint8_t *disas_insn(DisasContext *s, uint8_t *pc_start)
3187 3195 goto illegal_op;
3188 3196 }
3189 3197 break;
  3198 + case 0x38: /* ffreep sti, undocumented op */
  3199 + gen_op_ffree_STN(opreg);
  3200 + gen_op_fpop();
  3201 + break;
3190 3202 case 0x3c: /* df/4 */
3191 3203 switch(rm) {
3192 3204 case 0:
... ...