home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / Portable Patmos / usr / include / machine / pte.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-08  |  6.2 KB  |  152 lines  |  [TEXT/R*ch]

  1. /*
  2.  * Copyright (c) 1988 University of Utah.
  3.  * Copyright (c) 1982, 1990 The Regents of the University of California.
  4.  * All rights reserved.
  5.  *
  6.  * This code is derived from software contributed to Berkeley by
  7.  * the Systems Programming Group of the University of Utah Computer
  8.  * Science Department.
  9.  *
  10.  * Redistribution and use in source and binary forms, with or without
  11.  * modification, are permitted provided that the following conditions
  12.  * are met:
  13.  * 1. Redistributions of source code must retain the above copyright
  14.  *    notice, this list of conditions and the following disclaimer.
  15.  * 2. Redistributions in binary form must reproduce the above copyright
  16.  *    notice, this list of conditions and the following disclaimer in the
  17.  *    documentation and/or other materials provided with the distribution.
  18.  * 3. All advertising materials mentioning features or use of this software
  19.  *    must display the following acknowledgement:
  20.  *    This product includes software developed by the University of
  21.  *    California, Berkeley and its contributors.
  22.  * 4. Neither the name of the University nor the names of its contributors
  23.  *    may be used to endorse or promote products derived from this software
  24.  *    without specific prior written permission.
  25.  *
  26.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  27.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  28.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  29.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  30.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  31.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  32.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  33.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  34.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  35.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  36.  * SUCH DAMAGE.
  37.  */
  38. /*-
  39.  * Copyright (C) 1993    Allen K. Briggs, Chris P. Caputo,
  40.  *            Michael L. Finch, Bradley A. Grantham, and
  41.  *            Lawrence A. Kesteloot
  42.  * All rights reserved.
  43.  *
  44.  * Redistribution and use in source and binary forms, with or without
  45.  * modification, are permitted provided that the following conditions
  46.  * are met:
  47.  * 1. Redistributions of source code must retain the above copyright
  48.  *    notice, this list of conditions and the following disclaimer.
  49.  * 2. Redistributions in binary form must reproduce the above copyright
  50.  *    notice, this list of conditions and the following disclaimer in the
  51.  *    documentation and/or other materials provided with the distribution.
  52.  * 3. All advertising materials mentioning features or use of this software
  53.  *    must display the following acknowledgement:
  54.  *    This product includes software developed by the Alice Group.
  55.  * 4. The names of the Alice Group or any of its members may not be used
  56.  *    to endorse or promote products derived from this software without
  57.  *    specific prior written permission.
  58.  *
  59.  * THIS SOFTWARE IS PROVIDED BY THE ALICE GROUP ``AS IS'' AND ANY EXPRESS OR
  60.  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  61.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  62.  * IN NO EVENT SHALL THE ALICE GROUP BE LIABLE FOR ANY DIRECT, INDIRECT,
  63.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  64.  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  65.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  66.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  67.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  68.  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  69.  *
  70.  */
  71. /*
  72.  * from: Utah $Hdr: pte.h 1.11 89/09/03$
  73.  *
  74.  *    from: @(#)pte.h    7.3 (Berkeley) 5/8/91
  75.  *    $Id: pte.h,v 1.2 1993/11/29 00:38:33 briggs Exp $
  76.  */
  77.  
  78. /*
  79.  * Mac hardware segment/page table entries
  80.  */
  81.  
  82. struct ste {
  83.     unsigned int    sg_pfnum:20;    /* page table frame number */
  84.     unsigned int    :8;        /* reserved at 0 */
  85.     unsigned int    :1;        /* reserved at 1 */
  86.     unsigned int    sg_prot:1;    /* write protect bit */
  87.     unsigned int    sg_v:2;        /* valid bits */
  88. };
  89.  
  90. struct pte {
  91.     unsigned int    pg_pfnum:20;    /* page frame number or 0 */
  92.     unsigned int    :3;
  93.     unsigned int    pg_w:1;        /* is wired */
  94.     unsigned int    :1;        /* reserved at zero */
  95.     unsigned int    pg_ci:1;    /* cache inhibit bit */
  96.     unsigned int    :1;        /* reserved at zero */
  97.     unsigned int    pg_m:1;        /* hardware modified (dirty) bit */
  98.     unsigned int    pg_u:1;        /* hardware used (reference) bit */
  99.     unsigned int    pg_prot:1;    /* write protect bit */
  100.     unsigned int    pg_v:2;        /* valid bit */
  101. };
  102.  
  103. typedef struct ste    st_entry_t;    /* segment table entry */
  104. typedef struct pte    pt_entry_t;    /* Mach page table entry */
  105.  
  106. #define    PT_ENTRY_NULL    ((pt_entry_t *) 0)
  107. #define    ST_ENTRY_NULL    ((st_entry_t *) 0)
  108.  
  109. #define    SG_V        0x00000002    /* segment is valid */
  110. #define    SG_NV        0x00000000
  111. #define    SG_PROT        0x00000004    /* access protection mask */
  112. #define    SG_RO        0x00000004
  113. #define    SG_RW        0x00000000
  114. #define    SG_FRAME    0xfffff000
  115. #define    SG_IMASK    0xffc00000
  116. #define    SG_PMASK    0x003ff000
  117. #define    SG_ISHIFT    22
  118. #define    SG_PSHIFT    12
  119.  
  120. #define    PG_V        0x00000001
  121. #define    PG_NV        0x00000000
  122. #define    PG_PROT        0x00000004
  123. #define    PG_U        0x00000008
  124. #define    PG_M        0x00000010
  125. #define    PG_W        0x00000100
  126. #define    PG_RO        0x00000004
  127. #define    PG_RW        0x00000000
  128. #define    PG_FRAME    0xfffff000
  129. #define    PG_CI        0x00000040
  130. #define PG_SHIFT    12
  131. #define    PG_PFNUM(x)    (((x) & PG_FRAME) >> PG_SHIFT)
  132.  
  133. #define MAC_STSIZE    MAC_PAGE_SIZE    /* segment table size */
  134. #define MAC_MAX_PTSIZE    MAC_SEG_SIZE    /* max size of UPT */
  135. #define MAC_MAX_KPTSIZE    0x100000    /* max memory to allocate to KPT */
  136. #define MAC_PTBASE    0x60000000    /* UPT map base address */
  137.                     /* 9/2 BG changed from 0x10000000 */
  138. #define MAC_PTMAXSIZE    0x70000000    /* UPT map maximum size */
  139.  
  140. /*
  141.  * Kernel virtual address to page table entry and to physical address.
  142.  */
  143. #define    kvtopte(va) \
  144.     (&Sysmap[((unsigned)(va) - VM_MIN_KERNEL_ADDRESS) >> PGSHIFT])
  145. #define    kvtoste(va) \
  146.     (&Sysseg[((unsigned)(va) - VM_MIN_KERNEL_ADDRESS) >> SEGSHIFT])
  147. #define    ptetokv(pt) \
  148.     ((((pt_entry_t *)(pt) - Sysmap) << PGSHIFT) + VM_MIN_KERNEL_ADDRESS)
  149. #define    kvtophys(va) \
  150.     ((kvtopte(va)->pg_pfnum << PGSHIFT) | ((int)(va) & PGOFSET))
  151.  
  152.