Annotation of 43BSD/sys/vax/pte.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.