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