|
|
1.1 root 1: /*
2: * Copyright (c) 1982, 1986 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)pte.h 7.1 (Berkeley) 6/5/86
7: */
8:
9: /*
10: * VAX page table entry
11: *
12: * There are two major kinds of pte's: those which have ever existed (and are
13: * thus either now in core or on the swap device), and those which have
14: * never existed, but which will be filled on demand at first reference.
15: * There is a structure describing each. There is also an ancillary
16: * structure used in page clustering.
17: */
18:
19: #ifndef LOCORE
20: struct pte
21: {
22: unsigned int pg_pfnum:21, /* core page frame number or 0 */
23: :2,
24: pg_vreadm:1, /* modified since vread (or with _m) */
25: pg_swapm:1, /* have to write back to swap */
26: pg_fod:1, /* is fill on demand (=0) */
27: pg_m:1, /* hardware maintained modified bit */
28: pg_prot:4, /* access control */
29: pg_v:1; /* valid bit */
30: };
31: struct hpte
32: {
33: unsigned int pg_pfnum:21,
34: :2,
35: pg_high:9; /* special for clustering */
36: };
37: struct fpte
38: {
39: unsigned int pg_blkno:24, /* file system block number */
40: pg_fileno:1, /* file mapped from or TEXT or ZERO */
41: pg_fod:1, /* is fill on demand (=1) */
42: :1,
43: pg_prot:4,
44: pg_v:1;
45: };
46: #endif
47:
48: #define PG_V 0x80000000
49: #define PG_PROT 0x78000000
50: #define PG_M 0x04000000
51: #define PG_FOD 0x02000000
52: #define PG_VREADM 0x00800000
53: #define PG_PFNUM 0x001fffff
54:
55: #define PG_FZERO 0
56: #define PG_FTEXT 1
57: #define PG_FMAX (PG_FTEXT)
58:
59: #define PG_NOACC 0
60: #define PG_KW 0x10000000
61: #define PG_KR 0x18000000
62: #define PG_UW 0x20000000
63: #define PG_URKW 0x70000000
64: #define PG_URKR 0x78000000
65:
66: /*
67: * Pte related macros
68: */
69: #define dirty(pte) ((pte)->pg_fod == 0 && (pte)->pg_pfnum && \
70: ((pte)->pg_m || (pte)->pg_swapm))
71:
72: #ifndef LOCORE
73: #ifdef KERNEL
74:
75: /* utilities defined in locore.s */
76: extern struct pte Sysmap[];
77: extern struct pte Usrptmap[];
78: extern struct pte usrpt[];
79: extern struct pte Swapmap[];
80: extern struct pte Forkmap[];
81: extern struct pte Xswapmap[];
82: extern struct pte Xswap2map[];
83: extern struct pte Pushmap[];
84: extern struct pte Vfmap[];
85: extern struct pte mmap[];
86: extern struct pte msgbufmap[];
87: extern struct pte camap[];
88: extern struct pte Nexmap[][16];
89: extern struct pte Ioamap[][1];
90: #ifdef VAX630
91: extern struct pte Clockmap[];
92: extern struct pte Ka630map[];
93: #endif
94: #endif
95: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.