xref: /freebsd/sys/powerpc/include/pmap.h (revision 7c2779715ca7661187d824ecd0a4f79104510b9e)
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 
407c277971SPeter Grehan #if !defined(NPMAPS)
417c277971SPeter Grehan #define	NPMAPS		32768
427c277971SPeter Grehan #endif /* !defined(NPMAPS) */
437c277971SPeter Grehan 
44f9bac91bSBenno Rice struct	pmap {
455244eac9SBenno Rice 	u_int		pm_sr[16];
465244eac9SBenno Rice 	u_int		pm_active;
475244eac9SBenno Rice 	u_int		pm_context;
485244eac9SBenno Rice 	struct		pmap_statistics	pm_stats;
49f9bac91bSBenno Rice };
50f9bac91bSBenno Rice 
51f9bac91bSBenno Rice typedef	struct pmap *pmap_t;
52f9bac91bSBenno Rice 
535244eac9SBenno Rice struct pvo_entry {
545244eac9SBenno Rice 	LIST_ENTRY(pvo_entry) pvo_vlink;	/* Link to common virt page */
555244eac9SBenno Rice 	LIST_ENTRY(pvo_entry) pvo_olink;	/* Link to overflow entry */
565244eac9SBenno Rice 	struct		pte pvo_pte;		/* PTE */
575244eac9SBenno Rice 	pmap_t		pvo_pmap;		/* Owning pmap */
585244eac9SBenno Rice 	vm_offset_t	pvo_vaddr;		/* VA of entry */
595244eac9SBenno Rice };
605244eac9SBenno Rice LIST_HEAD(pvo_head, pvo_entry);
615244eac9SBenno Rice 
625244eac9SBenno Rice struct	md_page {
635244eac9SBenno Rice 	u_int	mdpg_attrs;
645244eac9SBenno Rice 	struct	pvo_head mdpg_pvoh;
655244eac9SBenno Rice };
665244eac9SBenno Rice 
675244eac9SBenno Rice extern	struct pmap kernel_pmap_store;
685244eac9SBenno Rice #define	kernel_pmap	(&kernel_pmap_store)
695244eac9SBenno Rice 
70dde5f194SAlan Cox #define	pmap_page_is_mapped(m)	(!LIST_EMPTY(&(m)->md.mdpg_pvoh))
71f9bac91bSBenno Rice 
72f9bac91bSBenno Rice #ifdef _KERNEL
73f9bac91bSBenno Rice 
745244eac9SBenno Rice void		pmap_bootstrap(vm_offset_t, vm_offset_t);
755501d40bSJake Burkholder void		pmap_kenter(vm_offset_t va, vm_offset_t pa);
765501d40bSJake Burkholder void		pmap_kremove(vm_offset_t);
778bbfa33aSBenno Rice void		*pmap_mapdev(vm_offset_t, vm_size_t);
788bbfa33aSBenno Rice void		pmap_unmapdev(vm_offset_t, vm_size_t);
79ac6ba8bdSBenno Rice void		pmap_deactivate(struct thread *);
805244eac9SBenno Rice vm_offset_t	pmap_kextract(vm_offset_t);
81f9bac91bSBenno Rice 
825244eac9SBenno Rice int		pmap_pte_spill(vm_offset_t);
83f9bac91bSBenno Rice 
84a0889814SBenno Rice #define	vtophys(va)	pmap_kextract(((vm_offset_t)(va)))
85a0889814SBenno Rice 
86f9bac91bSBenno Rice extern	vm_offset_t avail_start;
875244eac9SBenno Rice extern	vm_offset_t avail_end;
88f9bac91bSBenno Rice extern	vm_offset_t phys_avail[];
89f9bac91bSBenno Rice extern	vm_offset_t virtual_avail;
90f9bac91bSBenno Rice extern	vm_offset_t virtual_end;
91f9bac91bSBenno Rice 
925244eac9SBenno Rice extern	vm_offset_t msgbuf_phys;
93f9bac91bSBenno Rice 
94f9bac91bSBenno Rice #endif
95f9bac91bSBenno Rice 
965244eac9SBenno Rice #endif /* !_MACHINE_PMAP_H_ */
97