pte.h revision 1.18 1 1.18 thorpej /* $NetBSD: pte.h,v 1.18 1998/03/12 07:29:21 thorpej Exp $ */
2 1.17 thorpej
3 1.17 thorpej /*-
4 1.17 thorpej * Copyright (c) 1998 The NetBSD Foundation, Inc.
5 1.17 thorpej * All rights reserved.
6 1.17 thorpej *
7 1.17 thorpej * This code is derived from software contributed to The NetBSD Foundation
8 1.17 thorpej * by Jason R. Thorpe of the Numerical Aerospace Simulation Facility,
9 1.17 thorpej * NASA Ames Research Center.
10 1.17 thorpej *
11 1.17 thorpej * Redistribution and use in source and binary forms, with or without
12 1.17 thorpej * modification, are permitted provided that the following conditions
13 1.17 thorpej * are met:
14 1.17 thorpej * 1. Redistributions of source code must retain the above copyright
15 1.17 thorpej * notice, this list of conditions and the following disclaimer.
16 1.17 thorpej * 2. Redistributions in binary form must reproduce the above copyright
17 1.17 thorpej * notice, this list of conditions and the following disclaimer in the
18 1.17 thorpej * documentation and/or other materials provided with the distribution.
19 1.17 thorpej * 3. All advertising materials mentioning features or use of this software
20 1.17 thorpej * must display the following acknowledgement:
21 1.17 thorpej * This product includes software developed by the NetBSD
22 1.17 thorpej * Foundation, Inc. and its contributors.
23 1.17 thorpej * 4. Neither the name of The NetBSD Foundation nor the names of its
24 1.17 thorpej * contributors may be used to endorse or promote products derived
25 1.17 thorpej * from this software without specific prior written permission.
26 1.17 thorpej *
27 1.17 thorpej * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
28 1.17 thorpej * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
29 1.17 thorpej * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30 1.17 thorpej * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
31 1.17 thorpej * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32 1.17 thorpej * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33 1.17 thorpej * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34 1.17 thorpej * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35 1.17 thorpej * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36 1.17 thorpej * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 1.17 thorpej * POSSIBILITY OF SUCH DAMAGE.
38 1.17 thorpej */
39 1.1 cgd
40 1.1 cgd /*
41 1.8 cgd * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
42 1.1 cgd * All rights reserved.
43 1.1 cgd *
44 1.1 cgd * Author: Chris G. Demetriou
45 1.1 cgd *
46 1.1 cgd * Permission to use, copy, modify and distribute this software and
47 1.1 cgd * its documentation is hereby granted, provided that both the copyright
48 1.1 cgd * notice and this permission notice appear in all copies of the
49 1.1 cgd * software, derivative works or modified versions, and any portions
50 1.1 cgd * thereof, and that both notices appear in supporting documentation.
51 1.1 cgd *
52 1.1 cgd * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
53 1.1 cgd * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
54 1.1 cgd * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
55 1.1 cgd *
56 1.1 cgd * Carnegie Mellon requests users of this software to return to
57 1.1 cgd *
58 1.1 cgd * Software Distribution Coordinator or Software.Distribution (at) CS.CMU.EDU
59 1.1 cgd * School of Computer Science
60 1.1 cgd * Carnegie Mellon University
61 1.1 cgd * Pittsburgh PA 15213-3890
62 1.1 cgd *
63 1.1 cgd * any improvements or extensions that they make and grant Carnegie the
64 1.1 cgd * rights to redistribute these changes.
65 1.1 cgd */
66 1.1 cgd
67 1.14 thorpej #ifndef _ALPHA_PTE_H_
68 1.14 thorpej #define _ALPHA_PTE_H_
69 1.14 thorpej
70 1.1 cgd /*
71 1.1 cgd * Alpha page table entry.
72 1.1 cgd * Things which are in the VMS PALcode but not in the OSF PALcode
73 1.1 cgd * are marked with "(VMS)".
74 1.1 cgd *
75 1.1 cgd * This information derived from pp. (II) 3-3 - (II) 3-6 and
76 1.1 cgd * (III) 3-3 - (III) 3-5 of the "Alpha Architecture Reference Manual" by
77 1.1 cgd * Richard L. Sites.
78 1.1 cgd */
79 1.1 cgd
80 1.1 cgd /*
81 1.1 cgd * Alpha Page Table Entry
82 1.1 cgd */
83 1.5 cgd
84 1.5 cgd #include <machine/alpha_cpu.h>
85 1.5 cgd
86 1.5 cgd typedef alpha_pt_entry_t pt_entry_t;
87 1.5 cgd
88 1.1 cgd #define PT_ENTRY_NULL ((pt_entry_t *) 0)
89 1.1 cgd #define PTESHIFT 3 /* pte size == 1 << PTESHIFT */
90 1.1 cgd
91 1.5 cgd #define PG_V ALPHA_PTE_VALID
92 1.5 cgd #define PG_NV 0
93 1.5 cgd #define PG_FOR ALPHA_PTE_FAULT_ON_READ
94 1.5 cgd #define PG_FOW ALPHA_PTE_FAULT_ON_WRITE
95 1.5 cgd #define PG_FOE ALPHA_PTE_FAULT_ON_EXECUTE
96 1.5 cgd #define PG_ASM ALPHA_PTE_ASM
97 1.5 cgd #define PG_GH ALPHA_PTE_GRANULARITY
98 1.5 cgd #define PG_KRE ALPHA_PTE_KR
99 1.5 cgd #define PG_URE ALPHA_PTE_UR
100 1.5 cgd #define PG_KWE ALPHA_PTE_KW
101 1.5 cgd #define PG_UWE ALPHA_PTE_UW
102 1.5 cgd #define PG_PROT ALPHA_PTE_PROT
103 1.1 cgd #define PG_RSVD 0x000000000000cc80 /* Reserved fpr hardware */
104 1.1 cgd #define PG_WIRED 0x0000000000010000 /* Wired. [SOFTWARE] */
105 1.5 cgd #define PG_FRAME ALPHA_PTE_RAME
106 1.1 cgd #define PG_SHIFT 32
107 1.5 cgd #define PG_PFNUM(x) ALPHA_PTE_TO_PFN(x)
108 1.1 cgd
109 1.18 thorpej #define NPTEPG_SHIFT (PAGE_SHIFT - PTESHIFT)
110 1.18 thorpej #define NPTEPG (1 << NPTEPG_SHIFT)
111 1.18 thorpej
112 1.1 cgd #define PTEMASK (NPTEPG - 1)
113 1.18 thorpej
114 1.18 thorpej #define l3pte_index(va) \
115 1.18 thorpej (((vm_offset_t)(va) >> PAGE_SHIFT) & PTEMASK)
116 1.18 thorpej
117 1.18 thorpej #define l2pte_index(va) \
118 1.18 thorpej (((vm_offset_t)(va) >> (PAGE_SHIFT + NPTEPG_SHIFT)) & PTEMASK)
119 1.18 thorpej
120 1.18 thorpej #define l1pte_index(va) \
121 1.18 thorpej (((vm_offset_t)(va) >> (PAGE_SHIFT + 2 * NPTEPG_SHIFT)) & PTEMASK)
122 1.1 cgd
123 1.16 thorpej #define VPT_INDEX(va) \
124 1.16 thorpej (((vm_offset_t)(va) >> PAGE_SHIFT) & ((1 << 3 * NPTEPG_SHIFT) - 1))
125 1.17 thorpej
126 1.17 thorpej /* Space mapped by one level 1 PTE */
127 1.17 thorpej #define ALPHA_L1SEG_SIZE (1L << ((2 * NPTEPG_SHIFT) + PAGE_SHIFT))
128 1.17 thorpej
129 1.17 thorpej /* Space mapped by one level 2 PTE */
130 1.17 thorpej #define ALPHA_L2SEG_SIZE (1L << (NPTEPG_SHIFT + PAGE_SHIFT))
131 1.17 thorpej
132 1.17 thorpej #define alpha_trunc_l1seg(x) (((u_long)(x)) & ~(ALPHA_L1SEG_SIZE-1))
133 1.17 thorpej #define alpha_trunc_l2seg(x) (((u_long)(x)) & ~(ALPHA_L2SEG_SIZE-1))
134 1.1 cgd
135 1.3 cgd #ifdef _KERNEL
136 1.15 thorpej extern pt_entry_t *Lev1map; /* kernel level 1 page table */
137 1.14 thorpej #endif /* _KERNEL */
138 1.14 thorpej
139 1.14 thorpej #endif /* ! _ALPHA_PTE_H_ */
140