Annotation of 43BSDReno/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.6 (Berkeley) 8/31/89
                      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:                :1,
                     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_m)
                     70: 
                     71: /*
                     72:  * Kernel virtual address to page table entry and to physical address.
                     73:  */
                     74: #define        kvtopte(va) (&Sysmap[((unsigned)(va) &~ KERNBASE) >> PGSHIFT])
                     75: #define        kvtophys(x) ((kvtopte(x)->pg_pfnum << PGSHIFT) | ((int)(x) & PGOFSET))
                     76: 
                     77: #if defined(KERNEL) && !defined(LOCORE)
                     78: /* utilities defined in locore.s */
                     79: extern struct pte Sysmap[];
                     80: extern struct pte Usrptmap[];
                     81: extern struct pte usrpt[];
                     82: extern struct pte Swapmap[];
                     83: extern struct pte Forkmap[];
                     84: extern struct pte Xswapmap[];
                     85: extern struct pte Xswap2map[];
                     86: extern struct pte Pushmap[];
                     87: extern struct pte Vfmap[];
                     88: extern struct pte mmap[];
                     89: extern struct pte msgbufmap[];
                     90: extern struct pte kmempt[], ekmempt[];
                     91: extern struct pte Nexmap[][16];
                     92: #if VAX8600
                     93: extern struct pte Ioamap[][1];
                     94: #endif
                     95: #ifdef NFS
                     96: extern struct pte Nfsiomap[];
                     97: #endif
                     98: #ifdef MFS
                     99: extern struct pte Mfsiomap[];
                    100: #endif
                    101: #endif /* defined(KERNEL) && !defined(LOCORE) */

unix.superglobalmegacorp.com

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