Revision 023fe10d target-i386/translate.c

b/target-i386/translate.c
2973 2973
            case 0x0a: /* grp d9/2 */
2974 2974
                switch(rm) {
2975 2975
                case 0: /* fnop */
2976
                    /* check exceptions (FreeBSD FPU probe) */
2977
                    if (s->cc_op != CC_OP_DYNAMIC)
2978
                        gen_op_set_cc_op(s->cc_op);
2979
                    gen_op_jmp_im(pc_start - s->cs_base);
2980
                    gen_op_fwait();
2976 2981
                    break;
2977 2982
                default:
2978 2983
                    goto illegal_op;
......
3881 3886
    case 0x131: /* rdtsc */
3882 3887
        gen_op_rdtsc();
3883 3888
        break;
3889
    case 0x134: /* sysenter */
3890
        if (!s->pe) {
3891
            gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base);
3892
        } else {
3893
            if (s->cc_op != CC_OP_DYNAMIC) {
3894
                gen_op_set_cc_op(s->cc_op);
3895
                s->cc_op = CC_OP_DYNAMIC;
3896
            }
3897
            gen_op_jmp_im(pc_start - s->cs_base);
3898
            gen_op_sysenter();
3899
            gen_eob(s);
3900
        }
3901
        break;
3902
    case 0x135: /* sysexit */
3903
        if (!s->pe) {
3904
            gen_exception(s, EXCP0D_GPF, pc_start - s->cs_base);
3905
        } else {
3906
            if (s->cc_op != CC_OP_DYNAMIC) {
3907
                gen_op_set_cc_op(s->cc_op);
3908
                s->cc_op = CC_OP_DYNAMIC;
3909
            }
3910
            gen_op_jmp_im(pc_start - s->cs_base);
3911
            gen_op_sysexit();
3912
            gen_eob(s);
3913
        }
3914
        break;
3884 3915
    case 0x1a2: /* cpuid */
3885 3916
        gen_op_cpuid();
3886 3917
        break;

Also available in: Unified diff