summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/alpha/include/pmap.h3
-rw-r--r--sys/arch/amd64/include/pmap.h3
-rw-r--r--sys/arch/arm/include/pmap.h3
-rw-r--r--sys/arch/hppa/include/pmap.h3
-rw-r--r--sys/arch/hppa64/include/pmap.h3
-rw-r--r--sys/arch/i386/include/pmap.h3
-rw-r--r--sys/arch/m68k/include/pmap_motorola.h3
-rw-r--r--sys/arch/m88k/include/pmap.h3
-rw-r--r--sys/arch/mips64/include/pmap.h3
-rw-r--r--sys/arch/powerpc/include/pmap.h3
-rw-r--r--sys/arch/sh/include/pmap.h3
-rw-r--r--sys/arch/solbourne/include/pmap.h3
-rw-r--r--sys/arch/sparc/include/pmap.h3
-rw-r--r--sys/arch/sparc/sparc/pmap.c21
-rw-r--r--sys/arch/sparc64/include/pmap.h1
-rw-r--r--sys/arch/vax/vax/pmap.c27
-rw-r--r--sys/kern/init_main.c4
-rw-r--r--sys/uvm/uvm_extern.h6
-rw-r--r--sys/uvm/uvm_map.c27
-rw-r--r--sys/uvm/uvm_pmap.h7
20 files changed, 98 insertions, 34 deletions
diff --git a/sys/arch/alpha/include/pmap.h b/sys/arch/alpha/include/pmap.h
index 11f8c718950..1a7047e55da 100644
--- a/sys/arch/alpha/include/pmap.h
+++ b/sys/arch/alpha/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.21 2006/02/07 07:59:23 martin Exp $ */
+/* $OpenBSD: pmap.h,v 1.22 2007/09/10 18:49:44 miod Exp $ */
/* $NetBSD: pmap.h,v 1.37 2000/11/19 03:16:35 thorpej Exp $ */
/*-
@@ -194,6 +194,7 @@ void pmap_tlb_shootdown_q_drain(u_long, boolean_t);
#define pmap_proc_iflush(p, va, len) /* nothing */
#define pmap_unuse_final(p) /* nothing */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
extern pt_entry_t *VPT; /* Virtual Page Table */
diff --git a/sys/arch/amd64/include/pmap.h b/sys/arch/amd64/include/pmap.h
index b8b183e4fcb..bd70d929026 100644
--- a/sys/arch/amd64/include/pmap.h
+++ b/sys/arch/amd64/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.16 2007/07/06 11:46:48 art Exp $ */
+/* $OpenBSD: pmap.h,v 1.17 2007/09/10 18:49:44 miod Exp $ */
/* $NetBSD: pmap.h,v 1.1 2003/04/26 18:39:46 fvdl Exp $ */
/*
@@ -399,6 +399,7 @@ extern pd_entry_t *pdes[];
#define pmap_proc_iflush(p,va,len) /* nothing */
#define pmap_unuse_final(p) /* nothing */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
/*
diff --git a/sys/arch/arm/include/pmap.h b/sys/arch/arm/include/pmap.h
index 583b26a4459..847374df0ae 100644
--- a/sys/arch/arm/include/pmap.h
+++ b/sys/arch/arm/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.7 2007/04/21 19:26:04 miod Exp $ */
+/* $OpenBSD: pmap.h,v 1.8 2007/09/10 18:49:44 miod Exp $ */
/* $NetBSD: pmap.h,v 1.76 2003/09/06 09:10:46 rearnsha Exp $ */
/*
@@ -247,6 +247,7 @@ extern int pmap_debug_level; /* Only exists if PMAP_DEBUG */
#define pmap_proc_iflush(p, va, len) /* nothing */
#define pmap_unuse_final(p) /* nothing */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
/*
* Functions that we need to export
diff --git a/sys/arch/hppa/include/pmap.h b/sys/arch/hppa/include/pmap.h
index ddec30ddc08..a8acf4c59ad 100644
--- a/sys/arch/hppa/include/pmap.h
+++ b/sys/arch/hppa/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.33 2004/08/06 22:39:12 deraadt Exp $ */
+/* $OpenBSD: pmap.h,v 1.34 2007/09/10 18:49:44 miod Exp $ */
/*
* Copyright (c) 2002-2004 Michael Shalayeff
@@ -113,6 +113,7 @@ extern struct pdc_hwtlb pdc_hwtlb;
#define pmap_proc_iflush(p,va,len) /* nothing */
#define pmap_unuse_final(p) /* nothing */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
void pmap_bootstrap(vaddr_t);
boolean_t pmap_changebit(struct vm_page *, u_int, u_int);
diff --git a/sys/arch/hppa64/include/pmap.h b/sys/arch/hppa64/include/pmap.h
index 1014076b7e2..c6f2167d8d9 100644
--- a/sys/arch/hppa64/include/pmap.h
+++ b/sys/arch/hppa64/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.1 2005/04/01 10:40:48 mickey Exp $ */
+/* $OpenBSD: pmap.h,v 1.2 2007/09/10 18:49:45 miod Exp $ */
/*
* Copyright (c) 2005 Michael Shalayeff
@@ -83,6 +83,7 @@ extern struct pmap kernel_pmap_store;
#define pmap_proc_iflush(p,va,len) /* nothing */
#define pmap_unuse_final(p) /* nothing */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
void pmap_bootstrap(vaddr_t);
boolean_t pmap_changebit(struct vm_page *, pt_entry_t, pt_entry_t);
diff --git a/sys/arch/i386/include/pmap.h b/sys/arch/i386/include/pmap.h
index 2dea716c572..37f72bf0c98 100644
--- a/sys/arch/i386/include/pmap.h
+++ b/sys/arch/i386/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.47 2007/05/29 18:18:20 tom Exp $ */
+/* $OpenBSD: pmap.h,v 1.48 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: pmap.h,v 1.44 2000/04/24 17:18:18 thorpej Exp $ */
/*
@@ -360,6 +360,7 @@ extern int pmap_pg_g; /* do we support PG_G? */
#define pmap_proc_iflush(p,va,len) /* nothing */
#define pmap_unuse_final(p) /* nothing */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
/*
diff --git a/sys/arch/m68k/include/pmap_motorola.h b/sys/arch/m68k/include/pmap_motorola.h
index e2fa7ccb2bc..65db74117f4 100644
--- a/sys/arch/m68k/include/pmap_motorola.h
+++ b/sys/arch/m68k/include/pmap_motorola.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap_motorola.h,v 1.15 2006/06/24 13:22:14 miod Exp $ */
+/* $OpenBSD: pmap_motorola.h,v 1.16 2007/09/10 18:49:45 miod Exp $ */
/*
* Copyright (c) 1987 Carnegie-Mellon University
@@ -129,6 +129,7 @@ extern struct pv_entry *pv_table; /* array of entries, one per page */
#define pmap_copy(dp,sp,d,l,s) do { /* nothing */ } while (0)
#define pmap_update(pmap) do { /* nothing (yet) */ } while (0)
#define pmap_unuse_final(p) do { /* nothing */ } while (0)
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
extern pt_entry_t *Sysmap;
extern char *vmmap; /* map for mem, dumps, etc. */
diff --git a/sys/arch/m88k/include/pmap.h b/sys/arch/m88k/include/pmap.h
index 4585c8f66a3..5f95d086931 100644
--- a/sys/arch/m88k/include/pmap.h
+++ b/sys/arch/m88k/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.9 2005/12/11 21:45:28 miod Exp $ */
+/* $OpenBSD: pmap.h,v 1.10 2007/09/10 18:49:45 miod Exp $ */
/*
* Mach Operating System
* Copyright (c) 1991 Carnegie Mellon University
@@ -67,6 +67,7 @@ void pmap_bootstrap_cpu(cpuid_t);
void pmap_cache_ctrl(pmap_t, vaddr_t, vaddr_t, u_int);
void pmap_proc_iflush(struct proc *, vaddr_t, vsize_t);
#define pmap_unuse_final(p) /* nothing */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
boolean_t pmap_unsetbit(struct vm_page *, int);
#endif /* _KERNEL */
diff --git a/sys/arch/mips64/include/pmap.h b/sys/arch/mips64/include/pmap.h
index 88a2a5ec9bb..4adfe5b30ce 100644
--- a/sys/arch/mips64/include/pmap.h
+++ b/sys/arch/mips64/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.12 2007/04/27 18:14:11 miod Exp $ */
+/* $OpenBSD: pmap.h,v 1.13 2007/09/10 18:49:45 miod Exp $ */
/*
* Copyright (c) 1987 Carnegie-Mellon University
@@ -117,6 +117,7 @@ void pmap_page_cache(vm_page_t, int);
#define pmap_collect(x) do { /* nothing */ } while (0)
#define pmap_proc_iflush(p,va,len) do { /* nothing yet (handled in trap now) */ } while (0)
#define pmap_unuse_final(p) do { /* nothing yet */ } while (0)
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
#endif /* _KERNEL */
diff --git a/sys/arch/powerpc/include/pmap.h b/sys/arch/powerpc/include/pmap.h
index 51dbf28f286..29f146a3aac 100644
--- a/sys/arch/powerpc/include/pmap.h
+++ b/sys/arch/powerpc/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.44 2007/05/27 15:46:02 drahn Exp $ */
+/* $OpenBSD: pmap.h,v 1.45 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: pmap.h,v 1.1 1996/09/30 16:34:29 ws Exp $ */
/*-
@@ -139,6 +139,7 @@ int reserve_dumppages(caddr_t p);
void pmap_proc_iflush(struct proc *proc, vaddr_t va, vsize_t len);
#define pmap_unuse_final(p) /* nothing */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
#define PMAP_STEAL_MEMORY
diff --git a/sys/arch/sh/include/pmap.h b/sys/arch/sh/include/pmap.h
index bd70245409a..8abdbfe1d25 100644
--- a/sys/arch/sh/include/pmap.h
+++ b/sys/arch/sh/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.2 2007/03/05 21:48:21 miod Exp $ */
+/* $OpenBSD: pmap.h,v 1.3 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: pmap.h,v 1.28 2006/04/10 23:12:11 uwe Exp $ */
/*-
@@ -64,6 +64,7 @@ extern struct pmap __pmap_kernel;
void pmap_bootstrap(void);
void pmap_proc_iflush(struct proc *, vaddr_t, size_t);
#define pmap_unuse_final(p) do { /* nothing */ } while (0)
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
#define pmap_kernel() (&__pmap_kernel)
#define pmap_deactivate(pmap) do { /* nothing */ } while (0)
#define pmap_update(pmap) do { /* nothing */ } while (0)
diff --git a/sys/arch/solbourne/include/pmap.h b/sys/arch/solbourne/include/pmap.h
index 185df8f4afa..b93721dca8a 100644
--- a/sys/arch/solbourne/include/pmap.h
+++ b/sys/arch/solbourne/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.1 2005/04/19 21:30:18 miod Exp $ */
+/* $OpenBSD: pmap.h,v 1.2 2007/09/10 18:49:45 miod Exp $ */
/*
* Copyright (c) 2005, Miodrag Vallat
*
@@ -72,6 +72,7 @@ extern struct pmap kernel_pmap_store;
#define pmap_resident_count(p) ((p)->pm_stats.resident_count)
#define pmap_update(p) do { /* nothing */ } while (0)
#define pmap_wired_count(p) ((p)->pm_stats.wired_count)
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
#define PMAP_PREFER(fo, ap) pmap_prefer((fo), (ap))
diff --git a/sys/arch/sparc/include/pmap.h b/sys/arch/sparc/include/pmap.h
index 8e0e2a94973..449c5b6eb6e 100644
--- a/sys/arch/sparc/include/pmap.h
+++ b/sys/arch/sparc/include/pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.h,v 1.41 2007/06/06 17:15:12 deraadt Exp $ */
+/* $OpenBSD: pmap.h,v 1.42 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: pmap.h,v 1.30 1997/08/04 20:00:47 pk Exp $ */
/*
@@ -283,6 +283,7 @@ vaddr_t pmap_map(vaddr_t, paddr_t, paddr_t, int);
void pmap_reference(pmap_t);
void pmap_release(pmap_t);
void pmap_remove(pmap_t, vaddr_t, vaddr_t);
+void pmap_remove_holes(struct vm_map *);
int pmap_page_index(paddr_t);
void pmap_virtual_space(vaddr_t *, vaddr_t *);
void pmap_redzone(void);
diff --git a/sys/arch/sparc/sparc/pmap.c b/sys/arch/sparc/sparc/pmap.c
index 5eceee1cffd..56f03b9ccb6 100644
--- a/sys/arch/sparc/sparc/pmap.c
+++ b/sys/arch/sparc/sparc/pmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.145 2007/06/06 17:15:12 deraadt Exp $ */
+/* $OpenBSD: pmap.c,v 1.146 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: pmap.c,v 1.118 1998/05/19 19:00:18 thorpej Exp $ */
/*
@@ -6151,6 +6151,25 @@ pmap_prefer(foff, vap)
}
void
+pmap_remove_holes(struct vm_map *map)
+{
+#if defined(SUN4) || defined(SUN4C)
+ if (mmu_has_hole) {
+ vaddr_t shole, ehole;
+
+ shole = max(vm_map_min(map), (vaddr_t)MMU_HOLE_START);
+ ehole = min(vm_map_max(map), (vaddr_t)MMU_HOLE_END);
+
+ if (ehole <= shole)
+ return;
+
+ uvm_map_reserve(map, ehole - shole, UVM_UNKNOWN_OFFSET,
+ 0, &shole);
+ }
+#endif
+}
+
+void
pmap_redzone()
{
#if defined(SUN4M)
diff --git a/sys/arch/sparc64/include/pmap.h b/sys/arch/sparc64/include/pmap.h
index c1793a939b3..c2507a3e958 100644
--- a/sys/arch/sparc64/include/pmap.h
+++ b/sys/arch/sparc64/include/pmap.h
@@ -161,6 +161,7 @@ int pmap_count_res(pmap_t pmap);
#define pmap_resident_count(pm) pmap_count_res((pm))
#define pmap_phys_address(x) (x)
#define pmap_update(pm) /* nothing (yet) */
+#define pmap_remove_holes(map) do { /* nothing */ } while (0)
#define pmap_proc_iflush(p,va,len) /* nothing */
diff --git a/sys/arch/vax/vax/pmap.c b/sys/arch/vax/vax/pmap.c
index 1254d29f110..52949b19bc9 100644
--- a/sys/arch/vax/vax/pmap.c
+++ b/sys/arch/vax/vax/pmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.40 2007/05/20 14:14:12 miod Exp $ */
+/* $OpenBSD: pmap.c,v 1.41 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: pmap.c,v 1.74 1999/11/13 21:32:25 matt Exp $ */
/*
* Copyright (c) 1994, 1998, 1999 Ludd, University of Lule}, Sweden.
@@ -391,9 +391,9 @@ pmap_create()
(u_long *)&pmap->pm_p0br);
if (res)
panic("pmap_create");
- pmap->pm_p0lr = vax_btoc(MAXTSIZ + 40*1024*1024) | AST_PCB;
+ pmap->pm_p0lr = vax_btoc(MAXTSIZ + MAXDSIZ + BRKSIZ) | AST_PCB;
(vaddr_t)pmap->pm_p1br = (vaddr_t)pmap->pm_p0br + bytesiz - 0x800000;
- pmap->pm_p1lr = (0x200000 - vax_btoc(MAXSSIZ));
+ pmap->pm_p1lr = vax_btoc(0x40000000 - MAXSSIZ);
pmap->pm_stack = USRSTACK;
#ifdef PMAPDEBUG
@@ -410,6 +410,27 @@ pmap_create()
}
void
+pmap_remove_holes(struct vm_map *map)
+{
+ struct pmap *pmap = map->pmap;
+ vaddr_t shole, ehole;
+
+ if (pmap == pmap_kernel()) /* can of worms */
+ return;
+
+ shole = ((vaddr_t)(pmap->pm_p0lr & 0x3fffff)) << VAX_PGSHIFT;
+ ehole = 0x40000000 +
+ (((vaddr_t)(pmap->pm_p1lr & 0x3fffff)) << VAX_PGSHIFT);
+ shole = max(vm_map_min(map), shole);
+ ehole = min(vm_map_max(map), ehole);
+
+ if (ehole <= shole)
+ return;
+
+ uvm_map_reserve(map, ehole - shole, UVM_UNKNOWN_OFFSET, 0, &shole);
+}
+
+void
pmap_unwire(pmap, va)
pmap_t pmap;
vaddr_t va;
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
index 44d61a422d2..e3047847f8f 100644
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: init_main.c,v 1.143 2007/07/25 23:11:52 art Exp $ */
+/* $OpenBSD: init_main.c,v 1.144 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: init_main.c,v 1.84.4.1 1996/06/02 09:08:06 mrg Exp $ */
/*
@@ -310,7 +310,7 @@ main(void *framep)
/* Allocate a prototype map so we have something to fork. */
uvmspace_init(&vmspace0, pmap_kernel(), round_page(VM_MIN_ADDRESS),
- trunc_page(VM_MAX_ADDRESS), TRUE);
+ trunc_page(VM_MAX_ADDRESS), TRUE, TRUE);
p->p_vmspace = &vmspace0;
p->p_addr = proc0paddr; /* XXX */
diff --git a/sys/uvm/uvm_extern.h b/sys/uvm/uvm_extern.h
index ee53e56b96d..0149621943a 100644
--- a/sys/uvm/uvm_extern.h
+++ b/sys/uvm/uvm_extern.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_extern.h,v 1.66 2007/05/27 20:59:26 miod Exp $ */
+/* $OpenBSD: uvm_extern.h,v 1.67 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: uvm_extern.h,v 1.57 2001/03/09 01:02:12 chs Exp $ */
/*
@@ -519,9 +519,9 @@ boolean_t uvm_map_checkprot(vm_map_t, vaddr_t,
int uvm_map_protect(vm_map_t, vaddr_t,
vaddr_t, vm_prot_t, boolean_t);
struct vmspace *uvmspace_alloc(vaddr_t, vaddr_t,
- boolean_t);
+ boolean_t, boolean_t);
void uvmspace_init(struct vmspace *, struct pmap *,
- vaddr_t, vaddr_t, boolean_t);
+ vaddr_t, vaddr_t, boolean_t, boolean_t);
void uvmspace_exec(struct proc *, vaddr_t, vaddr_t);
struct vmspace *uvmspace_fork(struct vmspace *);
void uvmspace_free(struct vmspace *);
diff --git a/sys/uvm/uvm_map.c b/sys/uvm/uvm_map.c
index c81814f22d5..d4e055464c1 100644
--- a/sys/uvm/uvm_map.c
+++ b/sys/uvm/uvm_map.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_map.c,v 1.97 2007/07/18 17:00:20 art Exp $ */
+/* $OpenBSD: uvm_map.c,v 1.98 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: uvm_map.c,v 1.86 2000/11/27 08:40:03 chs Exp $ */
/*
@@ -3096,13 +3096,14 @@ uvm_map_checkprot(struct vm_map *map, vaddr_t start, vaddr_t end,
* - refcnt set to 1, rest must be init'd by caller
*/
struct vmspace *
-uvmspace_alloc(vaddr_t min, vaddr_t max, int pageable)
+uvmspace_alloc(vaddr_t min, vaddr_t max, boolean_t pageable,
+ boolean_t remove_holes)
{
struct vmspace *vm;
UVMHIST_FUNC("uvmspace_alloc"); UVMHIST_CALLED(maphist);
vm = pool_get(&uvm_vmspace_pool, PR_WAITOK);
- uvmspace_init(vm, NULL, min, max, pageable);
+ uvmspace_init(vm, NULL, min, max, pageable, remove_holes);
UVMHIST_LOG(maphist,"<- done (vm=%p)", vm,0,0,0);
return (vm);
}
@@ -3114,11 +3115,8 @@ uvmspace_alloc(vaddr_t min, vaddr_t max, int pageable)
* - refcnt set to 1, rest must be init'd by caller
*/
void
-uvmspace_init(vm, pmap, min, max, pageable)
- struct vmspace *vm;
- struct pmap *pmap;
- vaddr_t min, max;
- boolean_t pageable;
+uvmspace_init(struct vmspace *vm, struct pmap *pmap, vaddr_t min, vaddr_t max,
+ boolean_t pageable, boolean_t remove_holes)
{
UVMHIST_FUNC("uvmspace_init"); UVMHIST_CALLED(maphist);
@@ -3133,6 +3131,10 @@ uvmspace_init(vm, pmap, min, max, pageable)
vm->vm_map.pmap = pmap;
vm->vm_refcnt = 1;
+
+ if (remove_holes)
+ pmap_remove_holes(&vm->vm_map);
+
UVMHIST_LOG(maphist,"<- done",0,0,0,0);
}
@@ -3224,6 +3226,11 @@ uvmspace_exec(struct proc *p, vaddr_t start, vaddr_t end)
uvm_unmap(map, map->min_offset, map->max_offset);
/*
+ * but keep MMU holes unavailable
+ */
+ pmap_remove_holes(map);
+
+ /*
* resize the map
*/
vm_map_lock(map);
@@ -3244,7 +3251,7 @@ uvmspace_exec(struct proc *p, vaddr_t start, vaddr_t end)
* for p
*/
nvm = uvmspace_alloc(start, end,
- (map->flags & VM_MAP_PAGEABLE) ? TRUE : FALSE);
+ (map->flags & VM_MAP_PAGEABLE) ? TRUE : FALSE, TRUE);
/*
* install new vmspace and drop our ref to the old one.
@@ -3322,7 +3329,7 @@ uvmspace_fork(struct vmspace *vm1)
vm_map_lock(old_map);
vm2 = uvmspace_alloc(old_map->min_offset, old_map->max_offset,
- (old_map->flags & VM_MAP_PAGEABLE) ? TRUE : FALSE);
+ (old_map->flags & VM_MAP_PAGEABLE) ? TRUE : FALSE, FALSE);
memcpy(&vm2->vm_startcopy, &vm1->vm_startcopy,
(caddr_t) (vm1 + 1) - (caddr_t) &vm1->vm_startcopy);
new_map = &vm2->vm_map; /* XXX */
diff --git a/sys/uvm/uvm_pmap.h b/sys/uvm/uvm_pmap.h
index 873aeb8151b..8f1a1e71198 100644
--- a/sys/uvm/uvm_pmap.h
+++ b/sys/uvm/uvm_pmap.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_pmap.h,v 1.18 2005/04/04 23:40:05 miod Exp $ */
+/* $OpenBSD: uvm_pmap.h,v 1.19 2007/09/10 18:49:45 miod Exp $ */
/* $NetBSD: uvm_pmap.h,v 1.1 2000/06/27 09:00:14 mrg Exp $ */
/*
@@ -145,7 +145,7 @@ boolean_t pmap_is_referenced(struct vm_page *);
void pmap_page_protect(struct vm_page *, vm_prot_t);
#if !defined(pmap_phys_address)
-paddr_t pmap_phys_address(int);
+paddr_t pmap_phys_address(paddr_t);
#endif
void pmap_protect(pmap_t,
vaddr_t, vaddr_t, vm_prot_t);
@@ -155,6 +155,9 @@ void pmap_reference(pmap_t);
#if !defined(pmap_remove)
void pmap_remove(pmap_t, vaddr_t, vaddr_t);
#endif
+#if !defined(pmap_remove_holes)
+void pmap_remove_holes(struct vm_map *);
+#endif
#if !defined(pmap_update)
void pmap_update(pmap_t);
#endif