Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Iuzty-0008Mb-S0 for qemu-devel@nongnu.org; Wed, 21 Nov 2007 19:26:42 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Iuztx-0008Kn-6R for qemu-devel@nongnu.org; Wed, 21 Nov 2007 19:26:41 -0500 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Iuztw-0008KQ-V3 for qemu-devel@nongnu.org; Wed, 21 Nov 2007 19:26:41 -0500 Received: from hall.aurel32.net ([88.191.38.19]) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Iuztw-00012D-1t for qemu-devel@nongnu.org; Wed, 21 Nov 2007 19:26:40 -0500 Received: from aurel32 by hall.aurel32.net with local (Exim 4.63) (envelope-from ) id 1Iuzts-0006HD-AI for qemu-devel@nongnu.org; Thu, 22 Nov 2007 01:26:36 +0100 Date: Thu, 22 Nov 2007 01:26:36 +0100 From: Aurelien Jarno Message-ID: <20071122002636.GA24075@hall.aurel32.net> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline Sender: "aurel32,,," Subject: [Qemu-devel] [PATCH] MIPS64 MMU fixes Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org The trivial patch below fixes a few off-by-one in the MIPS64 MMU code. Index: target-mips/helper.c =================================================================== RCS file: /sources/qemu/qemu/target-mips/helper.c,v retrieving revision 1.58 diff -u -d -p -r1.58 helper.c --- target-mips/helper.c 8 Nov 2007 18:05:37 -0000 1.58 +++ target-mips/helper.c 22 Nov 2007 00:14:42 -0000 @@ -133,7 +133,7 @@ static int get_physical_address (CPUStat #if defined(TARGET_MIPS64) } else if (address < 0x4000000000000000ULL) { /* xuseg */ - if (UX && address < (0x3FFFFFFFFFFFFFFFULL & env->SEGMask)) { + if (UX && address <= (0x3FFFFFFFFFFFFFFFULL & env->SEGMask)) { ret = env->tlb->map_address(env, physical, prot, address, rw, access_type); } else { ret = TLBRET_BADADDR; @@ -141,7 +141,7 @@ static int get_physical_address (CPUStat } else if (address < 0x8000000000000000ULL) { /* xsseg */ if ((supervisor_mode || kernel_mode) && - SX && address < (0x7FFFFFFFFFFFFFFFULL & env->SEGMask)) { + SX && address <= (0x7FFFFFFFFFFFFFFFULL & env->SEGMask)) { ret = env->tlb->map_address(env, physical, prot, address, rw, access_type); } else { ret = TLBRET_BADADDR; @@ -150,7 +150,7 @@ static int get_physical_address (CPUStat /* xkphys */ /* XXX: Assumes PABITS = 36 (correct for MIPS64R1) */ if (kernel_mode && KX && - (address & 0x07FFFFFFFFFFFFFFULL) < 0x0000000FFFFFFFFFULL) { + (address & 0x07FFFFFFFFFFFFFFULL) <= 0x0000000FFFFFFFFFULL) { *physical = address & 0x0000000FFFFFFFFFULL; *prot = PAGE_READ | PAGE_WRITE; } else { @@ -159,7 +159,7 @@ static int get_physical_address (CPUStat } else if (address < 0xFFFFFFFF80000000ULL) { /* xkseg */ if (kernel_mode && KX && - address < (0xFFFFFFFF7FFFFFFFULL & env->SEGMask)) { + address <= (0xFFFFFFFF7FFFFFFFULL & env->SEGMask)) { ret = env->tlb->map_address(env, physical, prot, address, rw, access_type); } else { ret = TLBRET_BADADDR; -- .''`. Aurelien Jarno | GPG: 1024D/F1BCDB73 : :' : Debian developer | Electrical Engineer `. `' aurel32@debian.org | aurelien@aurel32.net `- people.debian.org/~aurel32 | www.aurel32.net