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