Commit c169c906a374774bde50834f360821ec6ba9b53a
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: | ... | ... |