|
|
1.1 root 1: /* pte.h 6.1 83/07/29 */
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: #ifndef LOCORE
14: struct pte
15: {
16: unsigned 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: };
25: struct hpte
26: {
27: unsigned int pg_pfnum:21,
28: :2,
29: pg_high:9; /* special for clustering */
30: };
31: struct fpte
32: {
33: unsigned 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: };
40: #endif
41:
42: #define PG_V 0x80000000
43: #define PG_PROT 0x78000000
44: #define PG_M 0x04000000
45: #define PG_FOD 0x02000000
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:
66: #ifndef LOCORE
67: #ifdef KERNEL
68: struct pte *vtopte();
69:
70: /* utilities defined in locore.s */
71: extern struct pte Sysmap[];
72: extern struct pte Usrptmap[];
73: extern struct pte usrpt[];
74: extern struct pte Swapmap[];
75: extern struct pte Forkmap[];
76: extern struct pte Xswapmap[];
77: extern struct pte Xswap2map[];
78: extern struct pte Pushmap[];
79: extern struct pte Vfmap[];
80: extern struct pte mmap[];
81: extern struct pte msgbufmap[];
82: extern struct pte camap[];
83: extern struct pte Nexmap[][16];
84: #endif
85: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.