[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH] MIPS64 MMU fixes
From: |
Aurelien Jarno |
Subject: |
[Qemu-devel] [PATCH] MIPS64 MMU fixes |
Date: |
Thu, 22 Nov 2007 01:26:36 +0100 |
User-agent: |
Mutt/1.5.13 (2006-08-11) |
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
`. `' address@hidden | address@hidden
`- people.debian.org/~aurel32 | www.aurel32.net
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Qemu-devel] [PATCH] MIPS64 MMU fixes,
Aurelien Jarno <=