1f9bac91bSBenno Rice /*- 2f9bac91bSBenno Rice * Copyright (C) 1995, 1996 Wolfgang Solfrank. 3f9bac91bSBenno Rice * Copyright (C) 1995, 1996 TooLs GmbH. 4f9bac91bSBenno Rice * All rights reserved. 5f9bac91bSBenno Rice * 6f9bac91bSBenno Rice * Redistribution and use in source and binary forms, with or without 7f9bac91bSBenno Rice * modification, are permitted provided that the following conditions 8f9bac91bSBenno Rice * are met: 9f9bac91bSBenno Rice * 1. Redistributions of source code must retain the above copyright 10f9bac91bSBenno Rice * notice, this list of conditions and the following disclaimer. 11f9bac91bSBenno Rice * 2. Redistributions in binary form must reproduce the above copyright 12f9bac91bSBenno Rice * notice, this list of conditions and the following disclaimer in the 13f9bac91bSBenno Rice * documentation and/or other materials provided with the distribution. 14f9bac91bSBenno Rice * 3. All advertising materials mentioning features or use of this software 15f9bac91bSBenno Rice * must display the following acknowledgement: 16f9bac91bSBenno Rice * This product includes software developed by TooLs GmbH. 17f9bac91bSBenno Rice * 4. The name of TooLs GmbH may not be used to endorse or promote products 18f9bac91bSBenno Rice * derived from this software without specific prior written permission. 19f9bac91bSBenno Rice * 20f9bac91bSBenno Rice * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 21f9bac91bSBenno Rice * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 22f9bac91bSBenno Rice * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 23f9bac91bSBenno Rice * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24f9bac91bSBenno Rice * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25f9bac91bSBenno Rice * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 26f9bac91bSBenno Rice * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27f9bac91bSBenno Rice * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28f9bac91bSBenno Rice * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 29f9bac91bSBenno Rice * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30f9bac91bSBenno Rice * 31f9bac91bSBenno Rice * $NetBSD: pmap.h,v 1.17 2000/03/30 16:18:24 jdolecek Exp $ 32f9bac91bSBenno Rice * $FreeBSD$ 33f9bac91bSBenno Rice */ 34f9bac91bSBenno Rice 35f9bac91bSBenno Rice #ifndef _MACHINE_PMAP_H_ 36f9bac91bSBenno Rice #define _MACHINE_PMAP_H_ 37f9bac91bSBenno Rice 385244eac9SBenno Rice #include <machine/sr.h> 39f9bac91bSBenno Rice 40f9bac91bSBenno Rice struct pmap { 415244eac9SBenno Rice u_int pm_sr[16]; 425244eac9SBenno Rice u_int pm_active; 435244eac9SBenno Rice u_int pm_context; 445244eac9SBenno Rice struct pmap_statistics pm_stats; 45f9bac91bSBenno Rice }; 46f9bac91bSBenno Rice 47f9bac91bSBenno Rice typedef struct pmap *pmap_t; 48f9bac91bSBenno Rice 495244eac9SBenno Rice struct pvo_entry { 505244eac9SBenno Rice LIST_ENTRY(pvo_entry) pvo_vlink; /* Link to common virt page */ 515244eac9SBenno Rice LIST_ENTRY(pvo_entry) pvo_olink; /* Link to overflow entry */ 525244eac9SBenno Rice struct pte pvo_pte; /* PTE */ 535244eac9SBenno Rice pmap_t pvo_pmap; /* Owning pmap */ 545244eac9SBenno Rice vm_offset_t pvo_vaddr; /* VA of entry */ 555244eac9SBenno Rice }; 565244eac9SBenno Rice LIST_HEAD(pvo_head, pvo_entry); 575244eac9SBenno Rice 585244eac9SBenno Rice struct md_page { 595244eac9SBenno Rice u_int mdpg_attrs; 605244eac9SBenno Rice struct pvo_head mdpg_pvoh; 615244eac9SBenno Rice }; 625244eac9SBenno Rice 635244eac9SBenno Rice extern struct pmap kernel_pmap_store; 645244eac9SBenno Rice #define kernel_pmap (&kernel_pmap_store) 655244eac9SBenno Rice 66dde5f194SAlan Cox #define pmap_page_is_mapped(m) (!LIST_EMPTY(&(m)->md.mdpg_pvoh)) 675244eac9SBenno Rice #define pmap_resident_count(pm) (pm->pm_stats.resident_count) 68f9bac91bSBenno Rice 69f9bac91bSBenno Rice #ifdef _KERNEL 70f9bac91bSBenno Rice 715244eac9SBenno Rice void pmap_bootstrap(vm_offset_t, vm_offset_t); 725501d40bSJake Burkholder void pmap_kenter(vm_offset_t va, vm_offset_t pa); 735501d40bSJake Burkholder void pmap_kremove(vm_offset_t); 748bbfa33aSBenno Rice void *pmap_mapdev(vm_offset_t, vm_size_t); 758bbfa33aSBenno Rice void pmap_unmapdev(vm_offset_t, vm_size_t); 76ac6ba8bdSBenno Rice void pmap_deactivate(struct thread *); 775244eac9SBenno Rice vm_offset_t pmap_kextract(vm_offset_t); 78f9bac91bSBenno Rice 795244eac9SBenno Rice int pmap_pte_spill(vm_offset_t); 80f9bac91bSBenno Rice 81a0889814SBenno Rice #define vtophys(va) pmap_kextract(((vm_offset_t)(va))) 82a0889814SBenno Rice 83f9bac91bSBenno Rice extern vm_offset_t avail_start; 845244eac9SBenno Rice extern vm_offset_t avail_end; 85f9bac91bSBenno Rice extern vm_offset_t phys_avail[]; 86f9bac91bSBenno Rice extern vm_offset_t virtual_avail; 87f9bac91bSBenno Rice extern vm_offset_t virtual_end; 88f9bac91bSBenno Rice 895244eac9SBenno Rice extern vm_offset_t msgbuf_phys; 90f9bac91bSBenno Rice 91f9bac91bSBenno Rice #endif 92f9bac91bSBenno Rice 935244eac9SBenno Rice #endif /* !_MACHINE_PMAP_H_ */ 94