1 /* pte.h 4.9 81/05/14 */ 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 86