restore missing default
[unix-history] / usr / src / sys / vax / include / pte.h
CommitLineData
3e2f54af 1/* pte.h 4.9 81/05/14 */
cb3a5783
BJ
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
5d1a7b0a 13#ifndef LOCORE
cb3a5783
BJ
14struct pte
15{
16unsigned int pg_pfnum:21, /* core page frame number or 0 */
17 :2,
18 pg_vreadm:1, /* modified since vread (or with _m) */
19 pg_swapm:1, /* have to write back to swap */
20 pg_fod:1, /* is fill on demand (=0) */
21 pg_m:1, /* hardware maintained modified bit */
22 pg_prot:4, /* access control */
23 pg_v:1; /* valid bit */
24};
25struct hpte
26{
27unsigned int pg_pfnum:21,
28 :2,
29 pg_high:9; /* special for clustering */
30};
31struct fpte
32{
33unsigned int pg_blkno:20, /* file system block number */
34 pg_fileno:5, /* file mapped from or TEXT or ZERO */
35 pg_fod:1, /* is fill on demand (=1) */
36 :1,
37 pg_prot:4,
38 pg_v:1;
39};
5d1a7b0a 40#endif
cb3a5783
BJ
41
42#define PG_V 0x80000000
43#define PG_PROT 0x78000000
44#define PG_M 0x04000000
3e2f54af 45#define PG_FOD 0x02000000
cb3a5783
BJ
46#define PG_VREADM 0x00800000
47#define PG_PFNUM 0x001fffff
48
49#define PG_FZERO (NOFILE)
50#define PG_FTEXT (NOFILE+1)
51#define PG_FMAX (PG_FTEXT)
52
53#define PG_NOACC 0
54#define PG_KW 0x10000000
55#define PG_KR 0x18000000
56#define PG_UW 0x20000000
57#define PG_URKW 0x70000000
58#define PG_URKR 0x78000000
59
60/*
61 * Pte related macros
62 */
63#define dirty(pte) ((pte)->pg_fod == 0 && (pte)->pg_pfnum && \
64 ((pte)->pg_m || (pte)->pg_swapm))
65
5d1a7b0a 66#ifndef LOCORE
cb3a5783
BJ
67#ifdef KERNEL
68struct pte *vtopte();
69
70/* utilities defined in locore.s */
71extern struct pte Sysmap[];
72extern struct pte Usrptmap[];
73extern struct pte usrpt[];
74extern struct pte Swapmap[];
75extern struct pte Forkmap[];
76extern struct pte Xswapmap[];
77extern struct pte Xswap2map[];
78extern struct pte Pushmap[];
79extern struct pte Vfmap[];
80extern struct pte mmap[];
a5e17cf9 81extern struct pte msgbufmap[];
b7c71f19 82extern struct pte camap[];
4d752f43 83extern struct pte Nexmap[][16];
cb3a5783 84#endif
5d1a7b0a 85#endif