[BACK]Return to vmparam.h CVS log [TXT][DIR] Up to [local] / sys / arch / arm / include

Annotation of sys/arch/arm/include/vmparam.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: vmparam.h,v 1.3 2005/04/11 15:13:01 deraadt Exp $     */
                      2: /*     $NetBSD: vmparam.h,v 1.18 2003/05/21 18:04:44 thorpej Exp $     */
                      3:
                      4: /*
                      5:  * Copyright (c) 2001, 2002 Wasabi Systems, Inc.
                      6:  * All rights reserved.
                      7:  *
                      8:  * Written by Jason R. Thorpe for Wasabi Systems, Inc.
                      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 for the NetBSD Project by
                     21:  *     Wasabi Systems, Inc.
                     22:  * 4. The name of Wasabi Systems, Inc. may not be used to endorse
                     23:  *    or promote products derived from this software without specific prior
                     24:  *    written permission.
                     25:  *
                     26:  * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
                     27:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     28:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     29:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
                     30:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     31:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     32:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     33:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     34:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     35:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     36:  * POSSIBILITY OF SUCH DAMAGE.
                     37:  */
                     38:
                     39: #ifndef _ARM_ARM_VMPARAM_H_
                     40: #define        _ARM_ARM_VMPARAM_H_
                     41:
                     42: #ifdef _KERNEL
                     43:
                     44: /*
                     45:  * Virtual Memory parameters common to all arm32 platforms.
                     46:  */
                     47:
                     48: #include <sys/lock.h>          /* struct simplelock */
                     49: #include <arm/pte.h>   /* pt_entry_t */
                     50: #endif /* _KERNEL */
                     51:
                     52: #define        USRTEXT         VM_MIN_ADDRESS
                     53: #define        USRSTACK        VM_MAXUSER_ADDRESS
                     54: #define        KERNBASE        VM_MAXUSER_ADDRESS
                     55:
                     56: /*
                     57:  * Note that MAXTSIZ can't be larger than 32M, otherwise the compiler
                     58:  * would have to be changed to not generate "bl" instructions.
                     59:  */
                     60: #define        MAXTSIZ         (16*1024*1024)          /* max text size */
                     61: #ifndef        DFLDSIZ
                     62: #define        DFLDSIZ         (128*1024*1024)         /* initial data size limit */
                     63: #endif
                     64: #ifndef        MAXDSIZ
                     65: #define        MAXDSIZ         (512*1024*1024)         /* max data size */
                     66: #endif
                     67: #ifndef        DFLSSIZ
                     68: #define        DFLSSIZ         (2*1024*1024)           /* initial stack size limit */
                     69: #endif
                     70: #ifndef        MAXSSIZ
                     71: #define        MAXSSIZ         (8*1024*1024)           /* max stack size */
                     72: #endif
                     73:
                     74: #define STACKGAP_RANDOM        256*1024
                     75:
                     76: /*
                     77:  * Size of SysV shared memory map
                     78:  */
                     79: #ifndef SHMMAXPGS
                     80: #define        SHMMAXPGS       1024
                     81: #endif
                     82:
                     83: /*
                     84:  * While the ARM architecture defines Section mappings, large pages,
                     85:  * and small pages, the standard page size is (and will always be) 4K.
                     86:  */
                     87: #define        PAGE_SHIFT      12
                     88: #define        PAGE_SIZE       (1 << PAGE_SHIFT)       /* bytes/page */
                     89: #define        PAGE_MASK       (PAGE_SIZE - 1)
                     90:
                     91: /*
                     92:  * Mach derived constants
                     93:  */
                     94: #define        VM_MIN_ADDRESS          ((vaddr_t) 0x00001000)
                     95: #define        VM_MAXUSER_ADDRESS      ((vaddr_t) ARM_KERNEL_BASE)
                     96: #define        VM_MAX_ADDRESS          VM_MAXUSER_ADDRESS
                     97:
                     98: #define        VM_MIN_KERNEL_ADDRESS   ((vaddr_t) ARM_KERNEL_BASE)
                     99: #define        VM_MAX_KERNEL_ADDRESS   ((vaddr_t) 0xffffffff)
                    100:
                    101: #ifdef _KERNEL
                    102:
                    103: /* XXX max. amount of KVM to be used by buffers. */
                    104: #ifndef VM_MAX_KERNEL_BUF
                    105: extern vaddr_t virtual_avail;
                    106: extern vaddr_t virtual_end;
                    107:
                    108: #define        VM_MAX_KERNEL_BUF       \
                    109:        ((virtual_end - virtual_avail) * 4 / 10)
                    110: #endif
                    111:
                    112: /*
                    113:  * pmap-specific data store in the vm_page structure.
                    114:  */
                    115: #define        __HAVE_VM_PAGE_MD
                    116: struct vm_page_md {
                    117:        struct pv_entry *pvh_list;              /* pv_entry list */
                    118:        struct simplelock pvh_slock;            /* lock on this head */
                    119:        int pvh_attrs;                          /* page attributes */
                    120:        u_int uro_mappings;
                    121:        u_int urw_mappings;
                    122:        union {
                    123:                u_short s_mappings[2];  /* Assume kernel count <= 65535 */
                    124:                u_int i_mappings;
                    125:        } k_u;
                    126: #define        kro_mappings    k_u.s_mappings[0]
                    127: #define        krw_mappings    k_u.s_mappings[1]
                    128: #define        k_mappings      k_u.i_mappings
                    129: };
                    130:
                    131: #define        VM_MDPAGE_INIT(pg)                                              \
                    132: do {                                                                   \
                    133:        (pg)->mdpage.pvh_list = NULL;                                   \
                    134:        simple_lock_init(&(pg)->mdpage.pvh_slock);                      \
                    135:        (pg)->mdpage.pvh_attrs = 0;                                     \
                    136:        (pg)->mdpage.uro_mappings = 0;                                  \
                    137:        (pg)->mdpage.urw_mappings = 0;                                  \
                    138:        (pg)->mdpage.k_mappings = 0;                                    \
                    139: } while (/*CONSTCOND*/0)
                    140:
                    141: #endif /* _KERNEL */
                    142:
                    143: #endif /* _ARM_ARM_VMPARAM_H_ */

CVSweb