diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/alpha/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/amd64/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/arm/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/hppa/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/hppa64/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/i386/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/m68k/include/pmap_motorola.h | 3 | ||||
-rw-r--r-- | sys/arch/m88k/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/mips64/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/powerpc/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/sh/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/solbourne/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/sparc/include/pmap.h | 3 | ||||
-rw-r--r-- | sys/arch/sparc/sparc/pmap.c | 21 | ||||
-rw-r--r-- | sys/arch/sparc64/include/pmap.h | 1 | ||||
-rw-r--r-- | sys/arch/vax/vax/pmap.c | 27 | ||||
-rw-r--r-- | sys/kern/init_main.c | 4 | ||||
-rw-r--r-- | sys/uvm/uvm_extern.h | 6 | ||||
-rw-r--r-- | sys/uvm/uvm_map.c | 27 | ||||
-rw-r--r-- | sys/uvm/uvm_pmap.h | 7 |
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 |