Commit 34f715e754adad52939d7b187fec655ddf3e0ba8
1 parent
cae61cef
fixed WP semantics
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@606 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
3 additions
and
3 deletions
target-i386/helper2.c
| ... | ... | @@ -320,7 +320,7 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, uint32_t addr, |
| 320 | 320 | if (is_write && !(pde & PG_RW_MASK)) |
| 321 | 321 | goto do_fault_protect; |
| 322 | 322 | } else { |
| 323 | - if ((env->cr[0] & CR0_WP_MASK) && (pde & PG_USER_MASK) && | |
| 323 | + if ((env->cr[0] & CR0_WP_MASK) && | |
| 324 | 324 | is_write && !(pde & PG_RW_MASK)) |
| 325 | 325 | goto do_fault_protect; |
| 326 | 326 | } |
| ... | ... | @@ -358,7 +358,7 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, uint32_t addr, |
| 358 | 358 | if (is_write && !(ptep & PG_RW_MASK)) |
| 359 | 359 | goto do_fault_protect; |
| 360 | 360 | } else { |
| 361 | - if ((env->cr[0] & CR0_WP_MASK) && (ptep & PG_USER_MASK) && | |
| 361 | + if ((env->cr[0] & CR0_WP_MASK) && | |
| 362 | 362 | is_write && !(ptep & PG_RW_MASK)) |
| 363 | 363 | goto do_fault_protect; |
| 364 | 364 | } |
| ... | ... | @@ -382,7 +382,7 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, uint32_t addr, |
| 382 | 382 | if (ptep & PG_RW_MASK) |
| 383 | 383 | prot |= PROT_WRITE; |
| 384 | 384 | } else { |
| 385 | - if (!(env->cr[0] & CR0_WP_MASK) || !(ptep & PG_USER_MASK) || | |
| 385 | + if (!(env->cr[0] & CR0_WP_MASK) || | |
| 386 | 386 | (ptep & PG_RW_MASK)) |
| 387 | 387 | prot |= PROT_WRITE; |
| 388 | 388 | } | ... | ... |