Revision af661ad1 target-i386/helper2.c
b/target-i386/helper2.c | ||
---|---|---|
670 | 670 |
#endif |
671 | 671 |
{ |
672 | 672 |
/* XXX: load them when cr3 is loaded ? */ |
673 |
pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 30) << 3)) &
|
|
673 |
pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) &
|
|
674 | 674 |
env->a20_mask; |
675 | 675 |
pdpe = ldq_phys(pdpe_addr); |
676 | 676 |
if (!(pdpe & PG_PRESENT_MASK)) { |
... | ... | |
765 | 765 |
uint32_t pde; |
766 | 766 |
|
767 | 767 |
/* page directory entry */ |
768 |
pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & ~3)) &
|
|
768 |
pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) &
|
|
769 | 769 |
env->a20_mask; |
770 | 770 |
pde = ldl_phys(pde_addr); |
771 | 771 |
if (!(pde & PG_PRESENT_MASK)) { |
... | ... | |
910 | 910 |
} else |
911 | 911 |
#endif |
912 | 912 |
{ |
913 |
pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 30) << 3)) &
|
|
913 |
pdpe_addr = ((env->cr[3] & ~0x1f) + ((addr >> 27) & 0x18)) &
|
|
914 | 914 |
env->a20_mask; |
915 | 915 |
pdpe = ldl_phys(pdpe_addr); |
916 | 916 |
if (!(pdpe & PG_PRESENT_MASK)) |
... | ... | |
940 | 940 |
page_size = 4096; |
941 | 941 |
} else { |
942 | 942 |
/* page directory entry */ |
943 |
pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & ~3)) & env->a20_mask;
|
|
943 |
pde_addr = ((env->cr[3] & ~0xfff) + ((addr >> 20) & 0xffc)) & env->a20_mask;
|
|
944 | 944 |
pde = ldl_phys(pde_addr); |
945 | 945 |
if (!(pde & PG_PRESENT_MASK)) |
946 | 946 |
return -1; |
Also available in: Unified diff