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