The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/i386/include/pmap_nopae.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-3-Clause
    3  *
    4  * Copyright (c) 1991 Regents of the University of California.
    5  * All rights reserved.
    6  *
    7  * Copyright (c) 2018 The FreeBSD Foundation
    8  * All rights reserved.
    9  *
   10  * This code is derived from software contributed to Berkeley by
   11  * the Systems Programming Group of the University of Utah Computer
   12  * Science Department and William Jolitz of UUNET Technologies Inc.
   13  *
   14  * Portions of this software were developed by
   15  * Konstantin Belousov <kib@FreeBSD.org> under sponsorship from
   16  * the FreeBSD Foundation.
   17  *
   18  * Redistribution and use in source and binary forms, with or without
   19  * modification, are permitted provided that the following conditions
   20  * are met:
   21  * 1. Redistributions of source code must retain the above copyright
   22  *    notice, this list of conditions and the following disclaimer.
   23  * 2. Redistributions in binary form must reproduce the above copyright
   24  *    notice, this list of conditions and the following disclaimer in the
   25  *    documentation and/or other materials provided with the distribution.
   26  * 3. Neither the name of the University nor the names of its contributors
   27  *    may be used to endorse or promote products derived from this software
   28  *    without specific prior written permission.
   29  *
   30  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   31  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   32  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   33  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   34  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   35  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   36  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   37  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   38  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   39  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   40  * SUCH DAMAGE.
   41  *
   42  * Derived from hp300 version by Mike Hibler, this version by William
   43  * Jolitz uses a recursive map [a pde points to the page directory] to
   44  * map the page tables using the pagetables themselves. This is done to
   45  * reduce the impact on kernel virtual memory for lots of sparse address
   46  * space, and to reduce the cost of memory to each process.
   47  *
   48  *      from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90
   49  *      from: @(#)pmap.h        7.4 (Berkeley) 5/12/91
   50  * $FreeBSD$
   51  */
   52 
   53 #ifndef _MACHINE_PMAP_NOPAE_H
   54 #define _MACHINE_PMAP_NOPAE_H
   55 
   56 #define NTRPPTD         1
   57 #define LOWPTDI         1
   58 #define KERNPTDI        2
   59 
   60 #define NPGPTD          1
   61 #define NPGPTD_SHIFT    10
   62 #undef  PDRSHIFT
   63 #define PDRSHIFT        PDRSHIFT_NOPAE
   64 #undef  NBPDR
   65 #define NBPDR           (1 << PDRSHIFT_NOPAE)   /* bytes/page dir */
   66 
   67 #define PG_FRAME        PG_FRAME_NOPAE
   68 #define PG_PS_FRAME     PG_PS_FRAME_NOPAE
   69 
   70 #define KVA_PAGES       (256*4)
   71 
   72 #ifndef NKPT
   73 #define NKPT            30
   74 #endif
   75 
   76 typedef uint32_t pd_entry_t;
   77 typedef uint32_t pt_entry_t;
   78 typedef uint32_t pdpt_entry_t;  /* Only to keep struct pmap layout. */
   79 
   80 #define PTESHIFT        (2)
   81 #define PDESHIFT        (2)
   82 
   83 #define pde_cmpset(pdep, old, new)      atomic_cmpset_int(pdep, old, new)
   84 #define pte_load_store(ptep, pte)       atomic_swap_int(ptep, pte)
   85 #define pte_load_clear(ptep)            atomic_swap_int(ptep, 0)
   86 #define pte_store(ptep, pte) do { \
   87         *(u_int *)(ptep) = (u_int)(pte); \
   88 } while (0)
   89 #define pte_store_zero(ptep, pte)       pte_store(ptep, pte)
   90 #define pte_load(ptep)                  atomic_load_int(ptep)
   91 
   92 extern pt_entry_t PTmap[];
   93 extern pd_entry_t PTD[];
   94 extern pd_entry_t PTDpde[];
   95 extern pd_entry_t *IdlePTD_nopae;
   96 extern pt_entry_t *KPTmap_nopae;
   97 
   98 struct pmap;
   99 pt_entry_t *__CONCAT(PMTYPE, pmap_pte)(struct pmap *, vm_offset_t) __pure2;
  100 
  101 #endif

Cache object: 555c176516763109fc6a88cf07781023


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.