Commit 735a8fd38e86d94f62e732de94e1a137619b9e49
1 parent
1bde465e
fixed performance regression
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1218 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
5 additions
and
5 deletions
target-i386/cpu.h
| ... | ... | @@ -564,8 +564,8 @@ static inline void cpu_x86_load_seg_cache(CPUX86State *env, |
| 564 | 564 | if (env->hflags & HF_CS64_MASK) { |
| 565 | 565 | /* zero base assumed for DS, ES and SS in long mode */ |
| 566 | 566 | } else if (!(env->cr[0] & CR0_PE_MASK) || |
| 567 | - (env->eflags & VM_MASK) || | |
| 568 | - !(new_hflags & HF_CS32_MASK)) { | |
| 567 | + (env->eflags & VM_MASK) || | |
| 568 | + !(env->hflags & HF_CS32_MASK)) { | |
| 569 | 569 | /* XXX: try to avoid this test. The problem comes from the |
| 570 | 570 | fact that is real mode or vm86 mode we only modify the |
| 571 | 571 | 'base' and 'selector' fields of the segment cache to go |
| ... | ... | @@ -573,9 +573,9 @@ static inline void cpu_x86_load_seg_cache(CPUX86State *env, |
| 573 | 573 | translate-i386.c. */ |
| 574 | 574 | new_hflags |= HF_ADDSEG_MASK; |
| 575 | 575 | } else { |
| 576 | - new_hflags |= (((unsigned long)env->segs[R_DS].base | | |
| 577 | - (unsigned long)env->segs[R_ES].base | | |
| 578 | - (unsigned long)env->segs[R_SS].base) != 0) << | |
| 576 | + new_hflags |= ((env->segs[R_DS].base | | |
| 577 | + env->segs[R_ES].base | | |
| 578 | + env->segs[R_SS].base) != 0) << | |
| 579 | 579 | HF_ADDSEG_SHIFT; |
| 580 | 580 | } |
| 581 | 581 | env->hflags = (env->hflags & | ... | ... |