Commit 447c2cefcb6b52c659f474490377b2721ff6a00a
1 parent
75956cf0
switch_tss eflags restore fix (malc)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1995 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
2 additions
and
0 deletions
target-i386/helper.c
@@ -1674,6 +1674,7 @@ void helper_ljmp_protected_T0_T1(int next_eip_addend) | @@ -1674,6 +1674,7 @@ void helper_ljmp_protected_T0_T1(int next_eip_addend) | ||
1674 | raise_exception_err(EXCP0D_GPF, new_cs & 0xfffc); | 1674 | raise_exception_err(EXCP0D_GPF, new_cs & 0xfffc); |
1675 | next_eip = env->eip + next_eip_addend; | 1675 | next_eip = env->eip + next_eip_addend; |
1676 | switch_tss(new_cs, e1, e2, SWITCH_TSS_JMP, next_eip); | 1676 | switch_tss(new_cs, e1, e2, SWITCH_TSS_JMP, next_eip); |
1677 | + CC_OP = CC_OP_EFLAGS; | ||
1677 | break; | 1678 | break; |
1678 | case 4: /* 286 call gate */ | 1679 | case 4: /* 286 call gate */ |
1679 | case 12: /* 386 call gate */ | 1680 | case 12: /* 386 call gate */ |
@@ -1834,6 +1835,7 @@ void helper_lcall_protected_T0_T1(int shift, int next_eip_addend) | @@ -1834,6 +1835,7 @@ void helper_lcall_protected_T0_T1(int shift, int next_eip_addend) | ||
1834 | if (dpl < cpl || dpl < rpl) | 1835 | if (dpl < cpl || dpl < rpl) |
1835 | raise_exception_err(EXCP0D_GPF, new_cs & 0xfffc); | 1836 | raise_exception_err(EXCP0D_GPF, new_cs & 0xfffc); |
1836 | switch_tss(new_cs, e1, e2, SWITCH_TSS_CALL, next_eip); | 1837 | switch_tss(new_cs, e1, e2, SWITCH_TSS_CALL, next_eip); |
1838 | + CC_OP = CC_OP_EFLAGS; | ||
1837 | return; | 1839 | return; |
1838 | case 4: /* 286 call gate */ | 1840 | case 4: /* 286 call gate */ |
1839 | case 12: /* 386 call gate */ | 1841 | case 12: /* 386 call gate */ |