xref: /original-bsd/sys/vax/include/pte.h (revision 552e81d8)
1 /*	pte.h	3.3	08/27/80	*/
2 
3 /*
4  * VAX page table entry
5  *
6  * There are two major kinds of pte's: those which have ever existed (and are
7  * thus either now in core or on the swap device), and those which have
8  * never existed, but which will be filled on demand at first reference.
9  * There is a structure describing each.  There is also an ancillary
10  * structure used in page clustering.
11  */
12 
13 struct pte
14 {
15 unsigned int	pg_pfnum:21,		/* core page frame number or 0 */
16 		:2,
17 		pg_vreadm:1,		/* modified since vread (or with _m) */
18 		pg_swapm:1,		/* have to write back to swap */
19 		pg_fod:1,		/* is fill on demand (=0) */
20 		pg_m:1,			/* hardware maintained modified bit */
21 		pg_prot:4,		/* access control */
22 		pg_v:1;			/* valid bit */
23 };
24 struct hpte
25 {
26 unsigned int	pg_pfnum:21,
27 		:2,
28 		pg_high:9;		/* special for clustering */
29 };
30 struct fpte
31 {
32 unsigned int	pg_blkno:20,		/* file system block number */
33 		pg_fileno:5,		/* file mapped from or TEXT or ZERO */
34 		pg_fod:1,		/* is fill on demand (=1) */
35 		:1,
36 		pg_prot:4,
37 		pg_v:1;
38 };
39 
40 #define	PG_V		0x80000000
41 #define	PG_PROT		0x78000000
42 #define	PG_M		0x04000000
43 #define	PG_VREADM	0x00800000
44 #define	PG_PFNUM	0x001fffff
45 
46 #define	PG_FZERO	(NOFILE)
47 #define	PG_FTEXT	(NOFILE+1)
48 #define	PG_FMAX		(PG_FTEXT)
49 
50 #define	PG_NOACC	0
51 #define	PG_KW		0x10000000
52 #define	PG_KR		0x18000000
53 #define	PG_UW		0x20000000
54 #define	PG_URKW		0x70000000
55 #define	PG_URKR		0x78000000
56 
57 /*
58  * Pte related macros
59  */
60 #define	dirty(pte)	((pte)->pg_fod == 0 && (pte)->pg_pfnum && \
61 			    ((pte)->pg_m || (pte)->pg_swapm))
62 
63 #ifdef KERNEL
64 struct	pte *vtopte();
65 
66 /* utilities defined in locore.s */
67 extern	struct pte Sysmap[];
68 extern	struct pte Usrptmap[];
69 extern	struct pte usrpt[];
70 extern	struct pte Swapmap[];
71 extern	struct pte Forkmap[];
72 extern	struct pte Xswapmap[];
73 extern	struct pte Xswap2map[];
74 extern	struct pte Pushmap[];
75 extern	struct pte Vfmap[];
76 extern	struct pte mmap[];
77 extern	struct pte mcrmap[];
78 extern	struct pte bufmap[];
79 #endif
80