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