It is no longer necessary for pmap_pinit() and pmap_release() to be

pmap interface functions, as NetBSD no longer uses statically allocated
pmaps (except for the kernel pmap, which is special-cased anyhow).
This commit is contained in:
thorpej 1998-05-19 19:00:11 +00:00
parent 420329c722
commit 6626878e7b
21 changed files with 104 additions and 57 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.43 1998/05/19 05:21:34 thorpej Exp $ */
/* $NetBSD: pmap.c,v 1.44 1998/05/19 19:00:12 thorpej Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@ -161,7 +161,7 @@
#include <sys/cdefs.h> /* RCS ID & Copyright macro defns */
__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.43 1998/05/19 05:21:34 thorpej Exp $");
__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.44 1998/05/19 19:00:12 thorpej Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@ -396,6 +396,8 @@ pa_to_pvh(pa)
void alpha_protection_init __P((void));
void pmap_remove_mapping __P((pmap_t, vm_offset_t, pt_entry_t *));
void pmap_changebit __P((vm_offset_t, u_long, boolean_t));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/*
* PT page management functions.
@ -816,7 +818,7 @@ pmap_uses_prom_console()
#endif _PMAP_MAY_USE_PROM_CONSOLE
/*
* pmap_steal_memory:
* pmap_steal_memory: [ INTERFACE ]
*
* Bootstrap memory allocator (alternative to vm_bootstrap_steal_memory()).
* This function allows for early dynamic memory allocation until the
@ -899,7 +901,7 @@ pmap_steal_memory(size, vstartp, vendp)
}
/*
* pmap_init:
* pmap_init: [ INTERFACE ]
*
* Initialize the pmap module. Called by vm_init(), to initialize any
* structures that the pmap system needs to map virtual memory.
@ -961,7 +963,7 @@ pmap_init()
}
/*
* pmap_create:
* pmap_create: [ INTERFACE ]
*
* Create and return a physical map.
*/
@ -1034,7 +1036,7 @@ pmap_pinit(pmap)
}
/*
* pmap_destroy:
* pmap_destroy: [ INTERFACE ]
*
* Drop the reference count on the specified pmap, releasing
* all resources if the reference count drops to zero.
@ -1109,7 +1111,7 @@ pmap_release(pmap)
}
/*
* pmap_reference:
* pmap_reference: [ INTERFACE ]
*
* Add a reference to the specified pmap.
*/
@ -1129,7 +1131,7 @@ pmap_reference(pmap)
}
/*
* pmap_remove:
* pmap_remove: [ INTERFACE ]
*
* Remove the given range of addresses from the specified map.
*
@ -1188,7 +1190,7 @@ pmap_remove(pmap, sva, eva)
}
/*
* pmap_page_protect:
* pmap_page_protect: [ INTERFACE ]
*
* Lower the permission for all mappings to a given page to
* the permissions specified.
@ -1280,7 +1282,7 @@ pmap_page_protect(pa, prot)
}
/*
* pmap_protect:
* pmap_protect: [ INTERFACE ]
*
* Set the physical protection on the specified range of this map
* as requested.
@ -1368,7 +1370,7 @@ pmap_protect(pmap, sva, eva, prot)
}
/*
* pmap_enter:
* pmap_enter: [ INTERFACE ]
*
* Insert the given physical page (p) at
* the specified virtual address (v) in the
@ -1640,7 +1642,7 @@ pmap_enter(pmap, va, pa, prot, wired)
#if defined(PMAP_NEW)
/*
* pmap_kenter_pa:
* pmap_kenter_pa: [ INTERFACE ]
*
* Enter a va -> pa mapping into the kernel pmap without any
* physical->virtual tracking.
@ -1689,7 +1691,7 @@ pmap_kenter_pa(va, pa, prot)
}
/*
* pmap_kenter_pgs:
* pmap_kenter_pgs: [ INTERFACE ]
*
* Enter a va -> pa mapping for the array of vm_page's into the
* kernel pmap without any physical->virtual tracking, starting
@ -1716,7 +1718,7 @@ pmap_kenter_pgs(va, pgs, npgs)
}
/*
* pmap_kremove:
* pmap_kremove: [ INTERFACE ]
*
* Remove a mapping entered with pmap_kenter_pa() or pmap_kenter_pgs()
* starting at va, for size bytes (assumed to be page rounded).
@ -1743,7 +1745,7 @@ pmap_kremove(va, size)
#endif /* PMAP_NEW */
/*
* pmap_change_wiring:
* pmap_change_wiring: [ INTERFACE ]
*
* Change the wiring attribute for a map/virtual-address pair.
*
@ -1800,7 +1802,7 @@ pmap_change_wiring(pmap, va, wired)
}
/*
* pmap_extract:
* pmap_extract: [ INTERFACE ]
*
* Extract the physical address associated with the given
* pmap/virtual address pair.
@ -1842,7 +1844,7 @@ pmap_extract(pmap, va)
}
/*
* pmap_copy:
* pmap_copy: [ INTERFACE ]
*
* Copy the mapping range specified by src_addr/len
* from the source map to the range dst_addr/len
@ -1866,7 +1868,7 @@ pmap_copy(dst_pmap, src_pmap, dst_addr, len, src_addr)
}
/*
* pmap_update:
* pmap_update: [ INTERFACE ]
*
* Require that all active physical maps contain no
* incorrect entries NOW, by processing any deferred
@ -1887,7 +1889,7 @@ pmap_update()
}
/*
* pmap_collect:
* pmap_collect: [ INTERFACE ]
*
* Garbage collects the physical map system for pages which are no
* longer used. Success need not be guaranteed -- that is, there
@ -1920,7 +1922,7 @@ pmap_collect(pmap)
}
/*
* pmap_activate:
* pmap_activate: [ INTERFACE ]
*
* Activate the pmap used by the specified process. This includes
* reloading the MMU context if the current process, and marking
@ -1959,7 +1961,7 @@ pmap_activate(p)
}
/*
* pmap_deactivate:
* pmap_deactivate: [ INTERFACE ]
*
* Mark that the pmap used by the specified process is no longer
* in use by the processor.
@ -1985,7 +1987,7 @@ pmap_deactivate(p)
}
/*
* pmap_zero_page:
* pmap_zero_page: [ INTERFACE ]
*
* Zero the specified (machine independent) page by mapping the page
* into virtual memory and using bzero to clear its contents, one
@ -2006,7 +2008,7 @@ pmap_zero_page(phys)
}
/*
* pmap_copy_page:
* pmap_copy_page: [ INTERFACE ]
*
* Copy the specified (machine independent) page by mapping the page
* into virtual memory and using bcopy to copy the page, one machine
@ -2028,7 +2030,7 @@ pmap_copy_page(src, dst)
}
/*
* pmap_pageable:
* pmap_pageable: [ INTERFACE ]
*
* Make the specified pages (by pmap, offset) pageable (or not) as
* requested.
@ -2054,7 +2056,7 @@ pmap_pageable(pmap, sva, eva, pageable)
}
/*
* pmap_clear_modify:
* pmap_clear_modify: [ INTERFACE ]
*
* Clear the modify bits on the specified physical page.
*/
@ -2103,7 +2105,7 @@ pmap_clear_modify(pa)
#endif /* PMAP_NEW */
/*
* pmap_clear_reference:
* pmap_clear_reference: [ INTERFACE ]
*
* Clear the reference bit on the specified physical page.
*/
@ -2152,7 +2154,7 @@ pmap_clear_reference(pa)
#endif /* PMAP_NEW */
/*
* pmap_is_referenced:
* pmap_is_referenced: [ INTERFACE ]
*
* Return whether or not the specified physical page is referenced
* by any physical maps.
@ -2198,7 +2200,7 @@ pmap_is_referenced(pa)
#endif /* PMAP_NEW */
/*
* pmap_is_modified:
* pmap_is_modified: [ INTERFACE ]
*
* Return whether or not the specified physical page is modified
* by any physical maps.
@ -2244,7 +2246,7 @@ pmap_is_modified(pa)
#endif /* PMAP_NEW */
/*
* pmap_phys_address:
* pmap_phys_address: [ INTERFACE ]
*
* Return the physical address corresponding to the specified
* cookie. Used by the device pager to decode a device driver's
@ -3121,9 +3123,14 @@ pmap_physpage_delref(kva)
/******************** page table page management ********************/
#if defined(PMAP_NEW)
/* Implement pmap_growkernel() */
/*
* pmap_growkernel: [ INTERFACE ]
*
* Grow the kernel address space. This is a hint from the
* upper layer to pre-allocate more kernel PT pages.
*
* XXX Implement XXX
*/
#endif /* PMAP_NEW */
/*

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.46 1998/03/22 23:12:50 is Exp $ */
/* $NetBSD: pmap.c,v 1.47 1998/05/19 19:00:13 thorpej Exp $ */
/*
* Copyright (c) 1991 Regents of the University of California.
@ -258,13 +258,14 @@ extern vm_offset_t z2mem_start;
boolean_t pmap_testbit __P((register vm_offset_t, int));
void pmap_enter_ptpage __P((register pmap_t, register vm_offset_t));
void pmap_collect1 __P((pmap_t, vm_offset_t, vm_offset_t));
extern vm_offset_t reserve_dumppages __P((vm_offset_t));
static void amiga_protection_init __P((void));
void pmap_check_wiring __P((char *, vm_offset_t));
static void pmap_changebit __P((register vm_offset_t, int, boolean_t));
struct pv_entry * pmap_alloc_pv __P((void));
void pmap_free_pv __P((struct pv_entry *));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
#ifdef DEBUG
void pmap_pvdump __P((vm_offset_t));

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.22 1998/05/08 23:34:00 mark Exp $ */
/* $NetBSD: pmap.c,v 1.23 1998/05/19 19:00:13 thorpej Exp $ */
/*
* Copyright (c) 1994-1997 Mark Brinicombe.
@ -172,6 +172,8 @@ int pmap_page_index __P((vm_offset_t pa));
void map_pagetable __P((vm_offset_t pagetable, vm_offset_t va,
vm_offset_t pa, unsigned int flags));
void pmap_copy_on_write __P((vm_offset_t pa));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
void bzero_page __P((vm_offset_t));
void bcopy_page __P((vm_offset_t, vm_offset_t));

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.26 1998/05/11 07:46:18 leo Exp $ */
/* $NetBSD: pmap.c,v 1.27 1998/05/19 19:00:14 thorpej Exp $ */
/*
* Copyright (c) 1991 Regents of the University of California.
@ -269,6 +269,8 @@ static struct pv_entry* pmap_alloc_pv __P((void));
static void pmap_free_pv __P((struct pv_entry *));
static void atari_protection_init __P((void));
static void pmap_collect1 __P((pmap_t, vm_offset_t, vm_offset_t));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/*
* All those kernel PT submaps that BSD is so fond of

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.3 1998/01/02 22:17:18 thorpej Exp $ */
/* $NetBSD: pmap.c,v 1.4 1998/05/19 19:00:15 thorpej Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@ -95,6 +95,8 @@ int pv_nfree;
int pv_pcnt;
static struct pv_entry *pmap_alloc_pv __P((void));
static void pmap_free_pv __P((struct pv_entry *));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
struct po_page;
struct po_page_info {

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.44 1998/04/26 21:24:28 scottr Exp $ */
/* $NetBSD: pmap.c,v 1.45 1998/05/19 19:00:15 thorpej Exp $ */
/*
* Copyright (c) 1991, 1993
@ -331,6 +331,8 @@ boolean_t pmap_testbit __P((vm_offset_t, int));
void pmap_changebit __P((vm_offset_t, int, boolean_t));
void pmap_enter_ptpage __P((pmap_t, vm_offset_t));
void pmap_collect1 __P((pmap_t, vm_offset_t, vm_offset_t));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
#ifdef DEBUG
void pmap_pvdump __P((vm_offset_t));

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.56 1998/02/10 14:11:11 mrg Exp $ */
/* $NetBSD: pmap.c,v 1.57 1998/05/19 19:00:15 thorpej Exp $ */
/*
* Copyright (c) 1993, 1994, 1995, 1997 Charles M. Hannum. All rights reserved.
@ -197,6 +197,8 @@ void pmap_collect_pv __P((void));
__inline void pmap_remove_pv __P((pmap_t, vm_offset_t, struct pv_entry *));
__inline void pmap_enter_pv __P((pmap_t, vm_offset_t, struct pv_entry *));
void pmap_remove_all __P((vm_offset_t));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
#ifdef NKPDE
int nkpde = NKPDE;

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.new.c,v 1.9 1998/04/07 18:32:10 thorpej Exp $ */
/* $NetBSD: pmap.new.c,v 1.10 1998/05/19 19:00:16 thorpej Exp $ */
/*
*
@ -418,6 +418,9 @@ static boolean_t pmap_try_steal_pv __P((struct pv_head *,
struct pv_entry *));
static void pmap_unmap_ptes __P((struct pmap *));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/*
* p m a p i n l i n e h e l p e r f u n c t i o n s
*/

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.40 1998/04/26 21:20:26 scottr Exp $ */
/* $NetBSD: pmap.c,v 1.41 1998/05/19 19:00:16 thorpej Exp $ */
/*
* Copyright (c) 1991, 1993
@ -301,6 +301,8 @@ int protostfree; /* prototype (default) free ST map */
struct pv_entry *pmap_alloc_pv __P((void));
void pmap_free_pv __P((struct pv_entry *));
void pmap_collect_pv __P((void));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
#define pa_to_pvh(pa) \
({ \

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.39 1998/05/06 21:53:53 mhitch Exp $ */
/* $NetBSD: pmap.c,v 1.40 1998/05/19 19:00:16 thorpej Exp $ */
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@ -78,7 +78,7 @@
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.39 1998/05/06 21:53:53 mhitch Exp $");
__KERNEL_RCSID(0, "$NetBSD: pmap.c,v 1.40 1998/05/19 19:00:16 thorpej Exp $");
/*
* Manages physical address maps.
@ -234,6 +234,9 @@ void mips_dump_segtab __P((struct proc *));
#endif
int pmap_is_page_ro __P((pmap_t, vm_offset_t, int));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/*
* Bootstrap the system enough to run with virtual memory.
* firstaddr is the first unused kseg0 address (not page aligned).

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.16 1998/03/18 07:12:49 thorpej Exp $ */
/* $NetBSD: pmap.c,v 1.17 1998/05/19 19:00:16 thorpej Exp $ */
/*
* Copyright (c) 1991, 1993
@ -327,6 +327,8 @@ void pmap_collect1 __P((pmap_t, vm_offset_t, vm_offset_t));
void pmap_pvdump __P((vm_offset_t));
void pmap_check_wiring __P((char *, vm_offset_t));
#endif
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/* pmap_remove_mapping flags */
#define PRM_TFLUSH 1

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.24 1998/03/18 21:59:39 matthias Exp $ */
/* $NetBSD: pmap.c,v 1.25 1998/05/19 19:00:17 thorpej Exp $ */
/*
* Copyright (c) 1993, 1994, 1995, 1997 Charles M. Hannum. All rights reserved.
@ -196,6 +196,8 @@ void pmap_collect_pv __P((void));
__inline void pmap_remove_pv __P((pmap_t, vm_offset_t, struct pv_entry *));
__inline void pmap_enter_pv __P((pmap_t, vm_offset_t, struct pv_entry *));
void pmap_remove_all __P((vm_offset_t));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
#ifdef NKPDE
int nkpde = NKPDE;

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.new.c,v 1.2 1998/04/25 19:54:32 matthias Exp $ */
/* $NetBSD: pmap.new.c,v 1.3 1998/05/19 19:00:17 thorpej Exp $ */
/*
*
@ -395,6 +395,9 @@ static boolean_t pmap_try_steal_pv __P((struct pv_head *,
struct pv_entry *));
static void pmap_unmap_ptes __P((struct pmap *));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/*
* p m a p i n l i n e h e l p e r f u n c t i o n s
*/

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.5 1996/10/13 11:39:52 jonathan Exp $ */
/* $NetBSD: pmap.c,v 1.6 1998/05/19 19:00:17 thorpej Exp $ */
/*
* Copyright (c) 1992, 1993
@ -172,6 +172,9 @@ int tlbpid_cnt = 2; /* next available TLB PID */
pt_entry_t *Sysmap; /* kernel pte table */
u_int Sysmapsize; /* number of pte's in Sysmap */
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/*
* Bootstrap the system enough to run with virtual memory.
* firstaddr is the first unused kseg0 address (not page aligned).

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.3 1998/01/02 22:17:20 thorpej Exp $ */
/* $NetBSD: pmap.c,v 1.4 1998/05/19 19:00:17 thorpej Exp $ */
/*
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
@ -95,6 +95,9 @@ int pv_pcnt;
static struct pv_entry *pmap_alloc_pv __P((void));
static void pmap_free_pv __P((struct pv_entry *));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
struct po_page;
struct po_page_info {
LIST_ENTRY(po_page) pgi_list;

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.117 1998/05/19 09:17:32 pk Exp $ */
/* $NetBSD: pmap.c,v 1.118 1998/05/19 19:00:18 thorpej Exp $ */
/*
* Copyright (c) 1996
@ -359,6 +359,8 @@ int npmemarr; /* number of entries in pmemarr */
/*static*/ vm_offset_t virtual_end; /* last free virtual page number */
static void pmap_page_upload __P((void));
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
int mmu_has_hole;

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.101 1998/02/19 22:21:28 gwr Exp $ */
/* $NetBSD: pmap.c,v 1.102 1998/05/19 19:00:18 thorpej Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -436,7 +436,8 @@ void pv_print __P((vm_offset_t pa));
void pmeg_print __P((pmeg_t pmegp));
static void pmeg_verify_empty __P((vm_offset_t va));
#endif /* PMAP_DEBUG */
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/*
* Various in-line helper functions.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.35 1998/02/09 19:56:37 jeremy Exp $ */
/* $NetBSD: pmap.c,v 1.36 1998/05/19 19:00:18 thorpej Exp $ */
/*-
* Copyright (c) 1996, 1997 The NetBSD Foundation, Inc.
@ -583,6 +583,8 @@ vm_offset_t pmap_extract __P((pmap_t, vm_offset_t));
int pmap_page_index __P((vm_offset_t));
u_int pmap_free_pages __P((void));
#endif /* INCLUDED_IN_PMAP_H */
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/********************************** CODE ********************************
* Functions that are called from other parts of the kernel are labeled *

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.48 1998/05/03 13:02:23 ragge Exp $ */
/* $NetBSD: pmap.c,v 1.49 1998/05/19 19:00:19 thorpej Exp $ */
/*
* Copyright (c) 1994 Ludd, University of Lule}, Sweden.
* All rights reserved.
@ -105,6 +105,9 @@ static inline void rensa __P((int, struct pte *));
vm_offset_t avail_start, avail_end;
vm_offset_t virtual_avail, virtual_end; /* Available virtual memory */
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/*
* pmap_bootstrap().
* Called as part of vm bootstrap, allocates internal pmap structures.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.c,v 1.15 1998/01/31 01:33:06 ross Exp $ */
/* $NetBSD: pmap.c,v 1.16 1998/05/19 19:00:19 thorpej Exp $ */
/*
* Copyright (c) 1991, 1993
@ -322,6 +322,8 @@ void pmap_enter_ptpage __P((pmap_t, vm_offset_t));
void pmap_pvdump __P((vm_offset_t));
void pmap_check_wiring __P((char *, vm_offset_t));
#endif
void pmap_pinit __P((pmap_t));
void pmap_release __P((pmap_t));
/* pmap_remove_mapping flags */
#define PRM_TFLUSH 1

View File

@ -1,4 +1,4 @@
/* $NetBSD: pmap.h,v 1.25 1998/05/19 18:12:27 thorpej Exp $ */
/* $NetBSD: pmap.h,v 1.26 1998/05/19 19:00:11 thorpej Exp $ */
/*
* Copyright (c) 1991, 1993
@ -187,11 +187,9 @@ void pmap_pageable __P((pmap_t,
#if !defined(pmap_phys_address)
vm_offset_t pmap_phys_address __P((int));
#endif
void pmap_pinit __P((pmap_t));
void pmap_protect __P((pmap_t,
vm_offset_t, vm_offset_t, vm_prot_t));
void pmap_reference __P((pmap_t));
void pmap_release __P((pmap_t));
void pmap_remove __P((pmap_t, vm_offset_t, vm_offset_t));
void pmap_update __P((void));
void pmap_zero_page __P((vm_offset_t));