|
|
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.