xref: /freebsd/sys/powerpc/include/pmap.h (revision 5501d40bb905f88fa25e4d3666eec4ec6df7c3ea)
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