From 34f715e754adad52939d7b187fec655ddf3e0ba8 Mon Sep 17 00:00:00 2001 From: bellard Date: Sat, 7 Feb 2004 20:42:14 +0000 Subject: [PATCH] fixed WP semantics git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@606 c046a42c-6fe2-441c-8c8c-71466251a162 --- target-i386/helper2.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target-i386/helper2.c b/target-i386/helper2.c index 47a93cddfa..f5c31d0df0 100644 --- a/target-i386/helper2.c +++ b/target-i386/helper2.c @@ -320,7 +320,7 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, uint32_t addr, if (is_write && !(pde & PG_RW_MASK)) goto do_fault_protect; } else { - if ((env->cr[0] & CR0_WP_MASK) && (pde & PG_USER_MASK) && + if ((env->cr[0] & CR0_WP_MASK) && is_write && !(pde & PG_RW_MASK)) goto do_fault_protect; } @@ -358,7 +358,7 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, uint32_t addr, if (is_write && !(ptep & PG_RW_MASK)) goto do_fault_protect; } else { - if ((env->cr[0] & CR0_WP_MASK) && (ptep & PG_USER_MASK) && + if ((env->cr[0] & CR0_WP_MASK) && is_write && !(ptep & PG_RW_MASK)) goto do_fault_protect; } @@ -382,7 +382,7 @@ int cpu_x86_handle_mmu_fault(CPUX86State *env, uint32_t addr, if (ptep & PG_RW_MASK) prot |= PROT_WRITE; } else { - if (!(env->cr[0] & CR0_WP_MASK) || !(ptep & PG_USER_MASK) || + if (!(env->cr[0] & CR0_WP_MASK) || (ptep & PG_RW_MASK)) prot |= PROT_WRITE; }