xref: /netbsd-src/sys/arch/mac68k/include/pte.h (revision 448e711c7835101c94f75b7ebddf58046df58290)
1 /*
2  * Copyright (c) 1988 University of Utah.
3  * Copyright (c) 1982, 1990 The Regents of the University of California.
4  * All rights reserved.
5  *
6  * This code is derived from software contributed to Berkeley by
7  * the Systems Programming Group of the University of Utah Computer
8  * Science Department.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  * 3. All advertising materials mentioning features or use of this software
19  *    must display the following acknowledgement:
20  *	This product includes software developed by the University of
21  *	California, Berkeley and its contributors.
22  * 4. Neither the name of the University nor the names of its contributors
23  *    may be used to endorse or promote products derived from this software
24  *    without specific prior written permission.
25  *
26  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36  * SUCH DAMAGE.
37  */
38 /*-
39  * Copyright (C) 1993	Allen K. Briggs, Chris P. Caputo,
40  *			Michael L. Finch, Bradley A. Grantham, and
41  *			Lawrence A. Kesteloot
42  * All rights reserved.
43  *
44  * Redistribution and use in source and binary forms, with or without
45  * modification, are permitted provided that the following conditions
46  * are met:
47  * 1. Redistributions of source code must retain the above copyright
48  *    notice, this list of conditions and the following disclaimer.
49  * 2. Redistributions in binary form must reproduce the above copyright
50  *    notice, this list of conditions and the following disclaimer in the
51  *    documentation and/or other materials provided with the distribution.
52  * 3. All advertising materials mentioning features or use of this software
53  *    must display the following acknowledgement:
54  *	This product includes software developed by the Alice Group.
55  * 4. The names of the Alice Group or any of its members may not be used
56  *    to endorse or promote products derived from this software without
57  *    specific prior written permission.
58  *
59  * THIS SOFTWARE IS PROVIDED BY THE ALICE GROUP ``AS IS'' AND ANY EXPRESS OR
60  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
61  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
62  * IN NO EVENT SHALL THE ALICE GROUP BE LIABLE FOR ANY DIRECT, INDIRECT,
63  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
64  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
65  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
66  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
67  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
68  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
69  *
70  */
71 /*
72  * from: Utah $Hdr: pte.h 1.11 89/09/03$
73  *
74  *	from: @(#)pte.h	7.3 (Berkeley) 5/8/91
75  *	$Id: pte.h,v 1.2 1993/11/29 00:38:33 briggs Exp $
76  */
77 
78 /*
79  * Mac hardware segment/page table entries
80  */
81 
82 struct ste {
83 	unsigned int	sg_pfnum:20;	/* page table frame number */
84 	unsigned int	:8;		/* reserved at 0 */
85 	unsigned int	:1;		/* reserved at 1 */
86 	unsigned int	sg_prot:1;	/* write protect bit */
87 	unsigned int	sg_v:2;		/* valid bits */
88 };
89 
90 struct pte {
91 	unsigned int	pg_pfnum:20;	/* page frame number or 0 */
92 	unsigned int	:3;
93 	unsigned int	pg_w:1;		/* is wired */
94 	unsigned int	:1;		/* reserved at zero */
95 	unsigned int	pg_ci:1;	/* cache inhibit bit */
96 	unsigned int	:1;		/* reserved at zero */
97 	unsigned int	pg_m:1;		/* hardware modified (dirty) bit */
98 	unsigned int	pg_u:1;		/* hardware used (reference) bit */
99 	unsigned int	pg_prot:1;	/* write protect bit */
100 	unsigned int	pg_v:2;		/* valid bit */
101 };
102 
103 typedef struct ste	st_entry_t;	/* segment table entry */
104 typedef struct pte	pt_entry_t;	/* Mach page table entry */
105 
106 #define	PT_ENTRY_NULL	((pt_entry_t *) 0)
107 #define	ST_ENTRY_NULL	((st_entry_t *) 0)
108 
109 #define	SG_V		0x00000002	/* segment is valid */
110 #define	SG_NV		0x00000000
111 #define	SG_PROT		0x00000004	/* access protection mask */
112 #define	SG_RO		0x00000004
113 #define	SG_RW		0x00000000
114 #define	SG_FRAME	0xfffff000
115 #define	SG_IMASK	0xffc00000
116 #define	SG_PMASK	0x003ff000
117 #define	SG_ISHIFT	22
118 #define	SG_PSHIFT	12
119 
120 #define	PG_V		0x00000001
121 #define	PG_NV		0x00000000
122 #define	PG_PROT		0x00000004
123 #define	PG_U		0x00000008
124 #define	PG_M		0x00000010
125 #define	PG_W		0x00000100
126 #define	PG_RO		0x00000004
127 #define	PG_RW		0x00000000
128 #define	PG_FRAME	0xfffff000
129 #define	PG_CI		0x00000040
130 #define PG_SHIFT	12
131 #define	PG_PFNUM(x)	(((x) & PG_FRAME) >> PG_SHIFT)
132 
133 #define MAC_STSIZE	MAC_PAGE_SIZE	/* segment table size */
134 #define MAC_MAX_PTSIZE	MAC_SEG_SIZE	/* max size of UPT */
135 #define MAC_MAX_KPTSIZE	0x100000	/* max memory to allocate to KPT */
136 #define MAC_PTBASE	0x60000000	/* UPT map base address */
137 					/* 9/2 BG changed from 0x10000000 */
138 #define MAC_PTMAXSIZE	0x70000000	/* UPT map maximum size */
139 
140 /*
141  * Kernel virtual address to page table entry and to physical address.
142  */
143 #define	kvtopte(va) \
144 	(&Sysmap[((unsigned)(va) - VM_MIN_KERNEL_ADDRESS) >> PGSHIFT])
145 #define	kvtoste(va) \
146 	(&Sysseg[((unsigned)(va) - VM_MIN_KERNEL_ADDRESS) >> SEGSHIFT])
147 #define	ptetokv(pt) \
148 	((((pt_entry_t *)(pt) - Sysmap) << PGSHIFT) + VM_MIN_KERNEL_ADDRESS)
149 #define	kvtophys(va) \
150 	((kvtopte(va)->pg_pfnum << PGSHIFT) | ((int)(va) & PGOFSET))
151 
152