2001-06-10 02:39:37 +00:00
|
|
|
/*-
|
|
|
|
* Copyright (C) 1995, 1996 Wolfgang Solfrank.
|
|
|
|
* Copyright (C) 1995, 1996 TooLs GmbH.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* Redistribution and use in source and binary forms, with or without
|
|
|
|
* modification, are permitted provided that the following conditions
|
|
|
|
* are met:
|
|
|
|
* 1. Redistributions of source code must retain the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer.
|
|
|
|
* 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
|
|
* documentation and/or other materials provided with the distribution.
|
|
|
|
* 3. All advertising materials mentioning features or use of this software
|
|
|
|
* must display the following acknowledgement:
|
|
|
|
* This product includes software developed by TooLs GmbH.
|
|
|
|
* 4. The name of TooLs GmbH may not be used to endorse or promote products
|
|
|
|
* derived from this software without specific prior written permission.
|
|
|
|
*
|
|
|
|
* THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
|
|
|
|
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
|
|
|
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
|
|
* IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
|
|
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
|
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
|
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
*
|
|
|
|
* $NetBSD: pmap.h,v 1.17 2000/03/30 16:18:24 jdolecek Exp $
|
|
|
|
* $FreeBSD$
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _MACHINE_PMAP_H_
|
|
|
|
#define _MACHINE_PMAP_H_
|
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
#include <machine/sr.h>
|
|
|
|
|
|
|
|
struct pmap {
|
|
|
|
u_int pm_sr[16];
|
|
|
|
u_int pm_active;
|
|
|
|
u_int pm_context;
|
|
|
|
struct pmap_statistics pm_stats;
|
2001-06-10 02:39:37 +00:00
|
|
|
};
|
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
typedef struct pmap *pmap_t;
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
struct pvo_entry {
|
|
|
|
LIST_ENTRY(pvo_entry) pvo_vlink; /* Link to common virt page */
|
|
|
|
LIST_ENTRY(pvo_entry) pvo_olink; /* Link to overflow entry */
|
|
|
|
struct pte pvo_pte; /* PTE */
|
|
|
|
pmap_t pvo_pmap; /* Owning pmap */
|
|
|
|
vm_offset_t pvo_vaddr; /* VA of entry */
|
2001-06-10 02:39:37 +00:00
|
|
|
};
|
2002-02-14 01:39:11 +00:00
|
|
|
LIST_HEAD(pvo_head, pvo_entry);
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
struct md_page {
|
|
|
|
u_int mdpg_attrs;
|
|
|
|
struct pvo_head mdpg_pvoh;
|
|
|
|
};
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
extern struct pmap kernel_pmap_store;
|
|
|
|
#define kernel_pmap (&kernel_pmap_store)
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-08-07 19:37:22 +00:00
|
|
|
#define pmap_page_is_mapped(m) (!LIST_EMPTY(&(m)->md.mdpg_pvoh))
|
2002-02-14 01:39:11 +00:00
|
|
|
#define pmap_resident_count(pm) (pm->pm_stats.resident_count)
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
#ifdef _KERNEL
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
void pmap_bootstrap(vm_offset_t, vm_offset_t);
|
2003-03-16 04:16:03 +00:00
|
|
|
void pmap_kenter(vm_offset_t va, vm_offset_t pa);
|
|
|
|
void pmap_kremove(vm_offset_t);
|
2002-06-29 09:45:59 +00:00
|
|
|
void *pmap_mapdev(vm_offset_t, vm_size_t);
|
|
|
|
void pmap_unmapdev(vm_offset_t, vm_size_t);
|
2002-02-28 11:55:44 +00:00
|
|
|
void pmap_deactivate(struct thread *);
|
2002-02-14 01:39:11 +00:00
|
|
|
vm_offset_t pmap_kextract(vm_offset_t);
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
int pmap_pte_spill(vm_offset_t);
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-06-29 09:47:06 +00:00
|
|
|
#define vtophys(va) pmap_kextract(((vm_offset_t)(va)))
|
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
extern vm_offset_t avail_start;
|
|
|
|
extern vm_offset_t avail_end;
|
|
|
|
extern vm_offset_t phys_avail[];
|
|
|
|
extern vm_offset_t virtual_avail;
|
|
|
|
extern vm_offset_t virtual_end;
|
2001-06-10 02:39:37 +00:00
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
extern vm_offset_t msgbuf_phys;
|
2001-06-10 02:39:37 +00:00
|
|
|
|
|
|
|
#endif
|
|
|
|
|
2002-02-14 01:39:11 +00:00
|
|
|
#endif /* !_MACHINE_PMAP_H_ */
|