param.h revision 191276
1204591Sluigi/*- 2204591Sluigi * Copyright (c) 1990 The Regents of the University of California. 3204591Sluigi * All rights reserved. 4204591Sluigi * 5204591Sluigi * This code is derived from software contributed to Berkeley by 6204591Sluigi * William Jolitz. 7204591Sluigi * 8204591Sluigi * Redistribution and use in source and binary forms, with or without 9204591Sluigi * modification, are permitted provided that the following conditions 10204591Sluigi * are met: 11204591Sluigi * 1. Redistributions of source code must retain the above copyright 12204591Sluigi * notice, this list of conditions and the following disclaimer. 13204591Sluigi * 2. Redistributions in binary form must reproduce the above copyright 14204591Sluigi * notice, this list of conditions and the following disclaimer in the 15204591Sluigi * documentation and/or other materials provided with the distribution. 16204591Sluigi * 17204591Sluigi * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18204591Sluigi * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19204591Sluigi * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20204591Sluigi * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21204591Sluigi * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22204591Sluigi * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23204591Sluigi * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24204591Sluigi * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25204591Sluigi * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26204591Sluigi * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27204591Sluigi * SUCH DAMAGE. 28204591Sluigi * 29204591Sluigi * from: @(#)param.h 5.8 (Berkeley) 6/28/91 30204591Sluigi * $FreeBSD: head/sys/sparc64/include/param.h 191276 2009-04-19 20:19:13Z rwatson $ 31204591Sluigi */ 32204591Sluigi 33204591Sluigi/* 34204591Sluigi * Machine dependent constants for sparc64. 35204591Sluigi */ 36204591Sluigi 37204591Sluigi/* 38204591Sluigi * Round p (pointer or byte index) up to a correctly-aligned value 39204591Sluigi * for all data types (int, long, ...). The result is unsigned int 40240494Sglebius * and must be cast to any desired pointer type. 41204591Sluigi */ 42204591Sluigi#ifndef _ALIGNBYTES 43204591Sluigi#define _ALIGNBYTES 0xf 44204591Sluigi#endif 45204591Sluigi#ifndef _ALIGN 46204591Sluigi#define _ALIGN(p) (((u_long)(p) + _ALIGNBYTES) & ~_ALIGNBYTES) 47204591Sluigi#endif 48204591Sluigi 49204591Sluigi#ifndef _NO_NAMESPACE_POLLUTION 50204591Sluigi 51204591Sluigi#ifndef _MACHINE_PARAM_H_ 52204591Sluigi#define _MACHINE_PARAM_H_ 53204591Sluigi 54204591Sluigi#ifndef MACHINE 55204591Sluigi#define MACHINE "sparc64" 56204591Sluigi#endif 57204591Sluigi#ifndef MACHINE_ARCH 58204591Sluigi#define MACHINE_ARCH "sparc64" 59204591Sluigi#endif 60204591Sluigi#define MID_MACHINE MID_SPARC64 61204591Sluigi 62227293Sed#if defined(SMP) || defined(KLD_MODULE) 63204591Sluigi#define MAXCPU 16 64204591Sluigi#else 65204591Sluigi#define MAXCPU 1 66204591Sluigi#endif /* SMP || KLD_MODULE */ 67204591Sluigi 68204591Sluigi#define INT_SHIFT 2 69204591Sluigi#define PTR_SHIFT 3 70204591Sluigi 71204591Sluigi#define ALIGNBYTES _ALIGNBYTES 72204591Sluigi#define ALIGN(p) _ALIGN(p) 73204591Sluigi 74204591Sluigi#ifndef CACHE_LINE_SHIFT 75204591Sluigi#define CACHE_LINE_SHIFT 6 76204591Sluigi#endif 77204591Sluigi#define CACHE_LINE_SIZE (1 << CACHE_LINE_SHIFT) 78204591Sluigi 79204591Sluigi#define PAGE_SHIFT_8K 13 80204591Sluigi#define PAGE_SIZE_8K (1L<<PAGE_SHIFT_8K) 81204591Sluigi#define PAGE_MASK_8K (PAGE_SIZE_8K-1) 82204591Sluigi 83204591Sluigi#define PAGE_SHIFT_64K 16 84204591Sluigi#define PAGE_SIZE_64K (1L<<PAGE_SHIFT_64K) 85204591Sluigi#define PAGE_MASK_64K (PAGE_SIZE_64K-1) 86204591Sluigi 87204591Sluigi#define PAGE_SHIFT_512K 19 88204591Sluigi#define PAGE_SIZE_512K (1L<<PAGE_SHIFT_512K) 89204591Sluigi#define PAGE_MASK_512K (PAGE_SIZE_512K-1) 90204591Sluigi 91204591Sluigi#define PAGE_SHIFT_4M 22 92204591Sluigi#define PAGE_SIZE_4M (1L<<PAGE_SHIFT_4M) 93204591Sluigi#define PAGE_MASK_4M (PAGE_SIZE_4M-1) 94204591Sluigi 95204591Sluigi#define PAGE_SHIFT_32M 25 96204591Sluigi#define PAGE_SIZE_32M (1L<<PAGE_SHIFT_32M) 97204591Sluigi#define PAGE_MASK_32M (PAGE_SIZE_32M-1) 98204591Sluigi 99204591Sluigi#define PAGE_SHIFT_256M 28 100204591Sluigi#define PAGE_SIZE_256M (1L<<PAGE_SHIFT_256M) 101204591Sluigi#define PAGE_MASK_256M (PAGE_SIZE_256M-1) 102204591Sluigi 103204591Sluigi#define PAGE_SHIFT_MIN PAGE_SHIFT_8K 104204591Sluigi#define PAGE_SIZE_MIN PAGE_SIZE_8K 105204591Sluigi#define PAGE_MASK_MIN PAGE_MASK_8K 106204591Sluigi#define PAGE_SHIFT PAGE_SHIFT_8K /* LOG2(PAGE_SIZE) */ 107204591Sluigi#define PAGE_SIZE PAGE_SIZE_8K /* bytes/page */ 108204591Sluigi#define PAGE_MASK PAGE_MASK_8K 109204591Sluigi#define PAGE_SHIFT_MAX PAGE_SHIFT_4M 110204591Sluigi#define PAGE_SIZE_MAX PAGE_SIZE_4M 111204591Sluigi#define PAGE_MASK_MAX PAGE_MASK_4M 112204591Sluigi 113204591Sluigi#ifndef KSTACK_PAGES 114204591Sluigi#define KSTACK_PAGES 4 /* pages of kernel stack (with pcb) */ 115204591Sluigi#endif 116204591Sluigi#define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ 117204591Sluigi#define PCPU_PAGES 1 118204591Sluigi 119204591Sluigi/* 120204591Sluigi * Ceiling on size of buffer cache (really only effects write queueing, 121204591Sluigi * the VM page cache is not effected), can be changed via 122204591Sluigi * the kern.maxbcache /boot/loader.conf variable. 123204591Sluigi */ 124204591Sluigi#ifndef VM_BCACHE_SIZE_MAX 125204591Sluigi#define VM_BCACHE_SIZE_MAX (400 * 1024 * 1024) 126204591Sluigi#endif 127204591Sluigi 128204591Sluigi/* 129204591Sluigi * Mach derived conversion macros 130204591Sluigi */ 131204591Sluigi#define round_page(x) (((unsigned long)(x) + PAGE_MASK) & ~PAGE_MASK) 132204591Sluigi#define trunc_page(x) ((unsigned long)(x) & ~PAGE_MASK) 133204591Sluigi 134204591Sluigi#define atop(x) ((unsigned long)(x) >> PAGE_SHIFT) 135204591Sluigi#define ptoa(x) ((unsigned long)(x) << PAGE_SHIFT) 136204591Sluigi 137204591Sluigi#define sparc64_btop(x) ((unsigned long)(x) >> PAGE_SHIFT) 138204591Sluigi#define sparc64_ptob(x) ((unsigned long)(x) << PAGE_SHIFT) 139204591Sluigi 140204591Sluigi#define pgtok(x) ((unsigned long)(x) * (PAGE_SIZE / 1024)) 141204591Sluigi 142204591Sluigi#endif /* !_MACHINE_PARAM_H_ */ 143204591Sluigi#endif /* !_NO_NAMESPACE_POLLUTION */ 144204591Sluigi