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