|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1991 Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * This code is derived from software contributed to Berkeley by ! 6: * The Mach Operating System project at Carnegie-Mellon University. ! 7: * ! 8: * Redistribution and use in source and binary forms, with or without ! 9: * modification, are permitted provided that the following conditions ! 10: * are met: ! 11: * 1. Redistributions of source code must retain the above copyright ! 12: * notice, this list of conditions and the following disclaimer. ! 13: * 2. Redistributions in binary form must reproduce the above copyright ! 14: * notice, this list of conditions and the following disclaimer in the ! 15: * documentation and/or other materials provided with the distribution. ! 16: * 3. All advertising materials mentioning features or use of this software ! 17: * must display the following acknowledgement: ! 18: * This product includes software developed by the University of ! 19: * California, Berkeley and its contributors. ! 20: * 4. Neither the name of the University nor the names of its contributors ! 21: * may be used to endorse or promote products derived from this software ! 22: * without specific prior written permission. ! 23: * ! 24: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ! 25: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ! 26: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ! 27: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ! 28: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ! 29: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ! 30: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ! 31: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ! 32: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ! 33: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ! 34: * SUCH DAMAGE. ! 35: * ! 36: * @(#)vm_param.h 7.2 (Berkeley) 4/21/91 ! 37: * ! 38: * ! 39: * Copyright (c) 1987, 1990 Carnegie-Mellon University. ! 40: * All rights reserved. ! 41: * ! 42: * Authors: Avadis Tevanian, Jr., Michael Wayne Young ! 43: * ! 44: * Permission to use, copy, modify and distribute this software and ! 45: * its documentation is hereby granted, provided that both the copyright ! 46: * notice and this permission notice appear in all copies of the ! 47: * software, derivative works or modified versions, and any portions ! 48: * thereof, and that both notices appear in supporting documentation. ! 49: * ! 50: * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" ! 51: * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND ! 52: * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. ! 53: * ! 54: * Carnegie Mellon requests users of this software to return to ! 55: * ! 56: * Software Distribution Coordinator or [email protected] ! 57: * School of Computer Science ! 58: * Carnegie Mellon University ! 59: * Pittsburgh PA 15213-3890 ! 60: * ! 61: * any improvements or extensions that they make and grant Carnegie the ! 62: * rights to redistribute these changes. ! 63: */ ! 64: ! 65: /* ! 66: * Machine independent virtual memory parameters. ! 67: */ ! 68: ! 69: #ifndef _VM_PARAM_ ! 70: #define _VM_PARAM_ ! 71: ! 72: #ifdef KERNEL ! 73: #include "machine/vmparam.h" ! 74: #else ! 75: #include <machine/vmparam.h> ! 76: #endif ! 77: ! 78: /* ! 79: * This belongs in types.h, but breaks too many existing programs. ! 80: */ ! 81: typedef int boolean_t; ! 82: #define TRUE 1 ! 83: #define FALSE 0 ! 84: ! 85: /* ! 86: * The machine independent pages are refered to as PAGES. A page ! 87: * is some number of hardware pages, depending on the target machine. ! 88: */ ! 89: ! 90: /* ! 91: * All references to the size of a page should be done with PAGE_SIZE ! 92: * or PAGE_SHIFT. The fact they are variables is hidden here so that ! 93: * we can easily make them constant if we so desire. ! 94: */ ! 95: ! 96: #define PAGE_SIZE page_size /* size of page in addressible units */ ! 97: #define PAGE_SHIFT page_shift /* number of bits to shift for pages */ ! 98: ! 99: /* ! 100: * Return values from the VM routines. ! 101: */ ! 102: #define KERN_SUCCESS 0 ! 103: #define KERN_INVALID_ADDRESS 1 ! 104: #define KERN_PROTECTION_FAILURE 2 ! 105: #define KERN_NO_SPACE 3 ! 106: #define KERN_INVALID_ARGUMENT 4 ! 107: #define KERN_FAILURE 5 ! 108: #define KERN_RESOURCE_SHORTAGE 6 ! 109: #define KERN_NOT_RECEIVER 7 ! 110: #define KERN_NO_ACCESS 8 ! 111: ! 112: #ifdef ASSEMBLER ! 113: #else ASSEMBLER ! 114: /* ! 115: * Convert addresses to pages and vice versa. ! 116: * No rounding is used. ! 117: */ ! 118: ! 119: #ifdef KERNEL ! 120: #define atop(x) (((unsigned)(x)) >> page_shift) ! 121: #define ptoa(x) ((vm_offset_t)((x) << page_shift)) ! 122: #endif KERNEL ! 123: ! 124: /* ! 125: * Round off or truncate to the nearest page. These will work ! 126: * for either addresses or counts. (i.e. 1 byte rounds to 1 page ! 127: * bytes. ! 128: */ ! 129: ! 130: #ifdef KERNEL ! 131: #define round_page(x) ((vm_offset_t)((((vm_offset_t)(x)) + page_mask) & ~page_mask)) ! 132: #define trunc_page(x) ((vm_offset_t)(((vm_offset_t)(x)) & ~page_mask)) ! 133: #else KERNEL ! 134: #define round_page(x) ((((vm_offset_t)(x) + (vm_page_size - 1)) / vm_page_size) * vm_page_size) ! 135: #define trunc_page(x) ((((vm_offset_t)(x)) / vm_page_size) * vm_page_size) ! 136: #endif KERNEL ! 137: ! 138: #ifdef KERNEL ! 139: extern vm_size_t page_size; /* machine independent page size */ ! 140: extern vm_size_t page_mask; /* page_size - 1; mask for ! 141: offset within page */ ! 142: extern int page_shift; /* shift to use for page size */ ! 143: ! 144: extern vm_size_t mem_size; /* size of physical memory (bytes) */ ! 145: extern vm_offset_t first_addr; /* first physical page */ ! 146: extern vm_offset_t last_addr; /* last physical page */ ! 147: #endif KERNEL ! 148: ! 149: #endif ASSEMBLER ! 150: ! 151: #endif _VM_PARAM_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.