Patchwork [4/8] target-sh4: MMU: fix ITLB priviledge check

login
register
mail settings
Submitter Aurelien Jarno
Date Feb. 6, 2010, 4:43 p.m.
Message ID <1265474623-23367-5-git-send-email-aurelien@aurel32.net>
Download mbox | patch
Permalink /patch/44712/
State New
Headers show

Comments

Aurelien Jarno - Feb. 6, 2010, 4:43 p.m.
There is an ITLB access violation if SR_MD=0 (user mode) while
the high bit of the protection key is 0 (priviledge mode).

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
---
 target-sh4/helper.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Patch

diff --git a/target-sh4/helper.c b/target-sh4/helper.c
index f9bf5e2..589efe4 100644
--- a/target-sh4/helper.c
+++ b/target-sh4/helper.c
@@ -377,7 +377,7 @@  static int get_mmu_address(CPUState * env, target_ulong * physical,
 	n = find_itlb_entry(env, address, use_asid, 1);
 	if (n >= 0) {
 	    matching = &env->itlb[n];
-	    if ((env->sr & SR_MD) & !(matching->pr & 2))
+	    if (!(env->sr & SR_MD) && !(matching->pr & 2))
 		n = MMU_ITLB_VIOLATION;
 	    else
 		*prot = PAGE_READ;