summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_mmap.c
diff options
context:
space:
mode:
authordyson <dyson@FreeBSD.org>1997-07-17 04:34:03 +0000
committerdyson <dyson@FreeBSD.org>1997-07-17 04:34:03 +0000
commitb39089e3e900353e31d93fec75b93ad05e747cdb (patch)
tree1061ae63c03d4ba52b54a403d33ef428edac2173 /sys/vm/vm_mmap.c
parent72b4af037318ef528f726826d4dc58d259321d8f (diff)
downloadFreeBSD-src-b39089e3e900353e31d93fec75b93ad05e747cdb.zip
FreeBSD-src-b39089e3e900353e31d93fec75b93ad05e747cdb.tar.gz
Add support for 4MB pages. This includes the .text, .data, .data parts
of the kernel, and also most of the dynamic parts of the kernel. Additionally, 4MB pages will be allocated for display buffers as appropriate (only.) The 4MB support for SMP isn't complete, but doesn't interfere with operation either.
Diffstat (limited to 'sys/vm/vm_mmap.c')
-rw-r--r--sys/vm/vm_mmap.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/vm/vm_mmap.c b/sys/vm/vm_mmap.c
index 2bed05f..27e83a7 100644
--- a/sys/vm/vm_mmap.c
+++ b/sys/vm/vm_mmap.c
@@ -38,7 +38,7 @@
* from: Utah $Hdr: vm_mmap.c 1.6 91/10/21$
*
* @(#)vm_mmap.c 8.4 (Berkeley) 1/12/94
- * $Id: vm_mmap.c,v 1.63 1997/03/23 03:37:53 bde Exp $
+ * $Id: vm_mmap.c,v 1.64 1997/06/15 23:35:32 dyson Exp $
*/
/*
@@ -946,7 +946,8 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
if (handle == NULL) {
object = NULL;
} else {
- object = vm_pager_allocate(type, handle, OFF_TO_IDX(objsize), prot, foff);
+ object = vm_pager_allocate(type,
+ handle, OFF_TO_IDX(objsize), prot, foff);
if (object == NULL)
return (type == OBJT_DEVICE ? EINVAL : ENOMEM);
}
@@ -972,10 +973,13 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
maxprot |= VM_PROT_EXECUTE;
#endif
+ if (fitit) {
+ *addr = pmap_addr_hint(object, *addr, size);
+ }
+
rv = vm_map_find(map, object, foff, addr, size, fitit,
prot, maxprot, docow);
-
if (rv != KERN_SUCCESS) {
/*
* Lose the object reference. Will destroy the
@@ -989,7 +993,7 @@ vm_mmap(map, addr, size, prot, maxprot, flags, handle, foff)
/*
* "Pre-fault" resident pages.
*/
- if ((type == OBJT_VNODE) && (map->pmap != NULL) && (object != NULL)) {
+ if ((map->pmap != NULL) && (object != NULL)) {
pmap_object_init_pt(map->pmap, *addr,
object, (vm_pindex_t) OFF_TO_IDX(foff), size, 1);
}
OpenPOWER on IntegriCloud