svn commit: r206718 - in head/sys/mips: conf mips
Juli Mallett
jmallett at FreeBSD.org
Sat Apr 17 01:49:51 UTC 2010
Author: jmallett
Date: Sat Apr 17 01:49:50 2010
New Revision: 206718
URL: http://svn.freebsd.org/changeset/base/206718
Log:
o) Back out my previous change to SWARM; some of it was to address an issue
that turned out to be unrelated, and the rest was, as pointed out by Neel,
just wrong-headed.
o) Tweak mem.c to fix use of /dev/kmem for direct-mapped addresses.
Modified:
head/sys/mips/conf/SWARM
head/sys/mips/mips/mem.c
Modified: head/sys/mips/conf/SWARM
==============================================================================
--- head/sys/mips/conf/SWARM Sat Apr 17 01:17:31 2010 (r206717)
+++ head/sys/mips/conf/SWARM Sat Apr 17 01:49:50 2010 (r206718)
@@ -19,13 +19,8 @@ options CFE_CONSOLE
options CFE_ENV
options ALT_BREAK_TO_DEBUGGER
-# Don't build any modules yet.
-makeoptions MODULES_OVERRIDE=""
-makeoptions TARGET_BIG_ENDIAN=defined
makeoptions LDSCRIPT_NAME= ldscript.mips.cfe
-makeoptions KERNLOADADDR=0x81000000
-
#cpu CPU_MIPS64
#options ISA_MIPS64
#makeoptions ARCH_FLAGS="-march=mips64 -mgp64 -mabi=o64"
Modified: head/sys/mips/mips/mem.c
==============================================================================
--- head/sys/mips/mips/mem.c Sat Apr 17 01:17:31 2010 (r206717)
+++ head/sys/mips/mips/mem.c Sat Apr 17 01:49:50 2010 (r206718)
@@ -120,21 +120,23 @@ memrw(struct cdev *dev, struct uio *uio,
* Make sure that all the pages are currently resident
* so that we don't create any zero-fill pages.
*/
-
- for (; va < eva; va += PAGE_SIZE)
- if (pmap_extract(kernel_pmap, va) == 0)
+ if (va >= VM_MIN_KERNEL_ADDRESS &&
+ eva <= VM_MAX_KERNEL_ADDRESS) {
+ for (; va < eva; va += PAGE_SIZE)
+ if (pmap_extract(kernel_pmap, va) == 0)
+ return (EFAULT);
+
+ prot = (uio->uio_rw == UIO_READ)
+ ? VM_PROT_READ : VM_PROT_WRITE;
+
+ va = uio->uio_offset;
+ if (kernacc((void *) va, iov->iov_len, prot)
+ == FALSE)
return (EFAULT);
-
- prot = (uio->uio_rw == UIO_READ)
- ? VM_PROT_READ : VM_PROT_WRITE;
+ }
va = uio->uio_offset;
- if (kernacc((void *) va, iov->iov_len, prot)
- == FALSE)
- return (EFAULT);
-
error = uiomove((void *)va, iov->iov_len, uio);
-
continue;
}
}
More information about the svn-src-all
mailing list